【发布时间】:2023-03-19 06:54:01
【问题描述】:
所以我有一个来自 Parse 的 PFFile 对象,我正在尝试创建一个函数来检索该 PFFile 的 UIImage 表示并返回它。比如:
func imageFromFile(file: PFFile) -> UIImage? {
var image: UIImage?
file.getDataInBackgroundWithBlock() { (data: NSData?, error: NSError?) -> Void in
if error != nil {
image = UIImage(data: data!)
}
}
return image
}
但是,这里的问题很明显。我每次都会得到 nil,因为 getDataInBackroundWithBlock 函数是异步的。有什么方法可以等到 UIImage 被检索到之后才返回图像变量?我不知道在这种情况下使用同步 getData() 是否是一种有效的方法。
【问题讨论】:
-
可以等待(可以使用`NSCondition),但如果你的调用代码在主线程上,那就不好了。通常的策略是在完成处理程序中对图像做一些事情。
-
如果你等待,那么它就不会是异步的。
标签: ios swift asynchronous parse-platform