Я потерялся с этой идеей, что быстрое предоставление Давайте перейдем в код, который у меня есть.swift func возвращает ноль, пока он все еще выполняется
var someVar: [UIImage]!
init()
{
someFunc()
}
func someFunc() -> [UIImage]!
{
postRequest.performRequestWithHandler({
(responseData: NSData!, urlResponse: NSHTTPURLResponse!,error: NSError!) -> Void in
var err: NSError?
var jsonResult: AnyObject? = NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.MutableLeaves, error: &err)
let profileImageUrl = jsonResult!.objectForKey("profile_image_url") as! NSString
var imageOfData: NSData! = NSData(contentsOfURL: NSURL(string: profileImageUrl as String)!)
self.someVar.append(UIImage(data: imageOfData)!) // #1
})
return self.someVar //#2
}
Давайте предположим, что этот код работает% 100 и предположим, что этот код находится в пределах class foo()
так, если я создал экземпляр Foo()
класса в viewController.swift
и называется someFunc()
, в основном это будет возвращать пустой массив [UIImage]!
, потому что строка # 2 будет выполнена до # 1. давайте взглянем на viewcontroller.swift
class ViewController: UIViewController {
var image: [UIImage]!
var someDecl: Foo = Foo()
@IBOutlet weak var img: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
self.image = self.someDecl.someVar
self.img.image = self.image // an empty image or throw an exception
}
}
Как решить эту проблему?, моя проблема мульти-резьб проблема? если есть некоторые Документации по поводу моего вопроса, пожалуйста, дайте мне ссылку, где я могу получить некоторые знания :)
Извините, я набирал все очень быстро, просто хотел дать представление о моей проблеме, даже несмотря на то, что ваш код производит ту же ошибку «неожиданно нашел нуль при разворачивании необязательного значения» в соответствии с вашей новой Декларацией моей функции он вернет someVar как ниль, поскольку он все еще загружает изображения из Интернета, см. раздел Capturing, который он запускает в новом процессе, и продолжайте выполнение остальной части кода функции. Я отредактирую свой код Снова –
Я нашел библиотеку, которая поможет вам избавиться от всей части нитей, которая вызывает возврат nil. Я просто добавлю это к ответу. –
спасибо :) плохо протестируйте его и обновите полный ответ, если он сработает для меня –