Установка свойств в методе init с использованием замыканийIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Установка свойств в методе init с использованием замыканий

Сообщение Anonymous »

Я использую веб-API для доступа к JSON и инициализации объекта GRDMovie. Пока это происходит, мне нужно обратиться к API, используя другой URL-адрес для некоторых других свойств. Это вызывает некоторые проблемы в методе инициализации GRDMovie, поскольку замыкания пропускаются. Код ниже:

Код: Выделить всё

var posterImage : UIImage?
let title : String
let score : Double
var rating : String?
let releaseDate : String
let overview : String
let movieID : Int
let smallURL : String
let year : String

init(title:String, overview:String, score:Double, movieID:Int, releaseDate:String, smallURL: String, year:String) {

self.title = title
self.overview = overview
self.score = score
self.movieID = movieID
self.releaseDate = releaseDate
self.smallURL = smallURL
self.year = year
self.rating = nil
self.posterImage = nil

self.getMovieRatingWith(movieID) { (rating) in
self.rating = rating
}

self.getPosterImageDataFromURL(smallURL) { (posterImage) in
self.posterImage = posterImage
}
}

func getMovieRatingWith(movieID: Int, completion: (rating: String) -> ()) {

var apiDict = NSDictionary()
var rating: String = ""

let urlString:String = "http://api.themoviedb.org/3/movie/\(movieID)?api_key=ebea8cfca72fdff8d2624ad7bbf78e4c&append_to_response=releases"
let escapedUrlString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
let apiURL = NSURL(string:escapedUrlString!)
let session = NSURLSession.sharedSession()

session.dataTaskWithURL(apiURL!, completionHandler: { (data:NSData?, response:NSURLResponse?, error:NSError?) in
do {
if let data2 = data {
let jsonDict = try NSJSONSerialization.JSONObjectWithData(data2, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
//send json outward
apiDict = jsonDict

if let releases = apiDict["releases"] as? NSDictionary {
if let countries = releases["countries"] as? [NSDictionary] {
for countryData in countries {
if let place: String = countryData["iso_3166_1"] as? String {
if place == "US" {
rating = countryData["certification"] as! String
} else {

}
}
}
}
}

if rating == "" {
rating = "Not Available"
}

completion(rating: rating)
//print(rating)
}
} catch {
//handle NSError
print("error")
}
}).resume()
}

func getPosterImageDataFromURL(smallURL:String, completion: (posterImage: UIImage) -> ()) {

let escapedURLString:String = smallURL.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
let callURL = NSURL(string: escapedURLString)
let session = NSURLSession.sharedSession()

session.dataTaskWithURL(callURL!) { (data:NSData?, response:NSURLResponse?, error:NSError?) in
do {
if let data2 = data {
let poster = UIImage(data: data2)
completion(posterImage: poster!)
}
}
}

}
Естественно, я не получаю ноль за изображение и рейтинг. Как мне это структурировать, чтобы правильно зафиксировать эти значения?

Подробнее здесь: https://stackoverflow.com/questions/366 ... g-closures
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Когда типы замыканий наконец стали структурными типами?
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Избегайте замыканий при вызове Parallel.For()
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Избегайте замыканий при вызове Parallel.For()
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Не могу понять, как компилятор использует созданные им классы для моих замыканий.
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Оценка коротких замыканий множества параметров с Hamcrest
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»