我想尝试使用PFFile类型的数组并转换为UIImage类型的数组。我使用下面的代码,无论它总是返回一个空数组。任何帮助深表感谢。
userImagesPassed是一个PFFile类型的数组。
func setUserImages() -> Array<UIImage> {
var userImageArray = [UIImage]()
for file2 in userImagesPassed {
file2.getDataInBackground(block: { (imageData2, error) in
if error != nil {
userImageArray = []
} else {
userImageArray.append(UIImage(data: imageData2!)!)
}
})
}
return userImageArray
}
编辑:
如果我在for循环中打印userImageArray,我会得到正确的输出(UIImage类型的填充数组)。但是返回的值仍然是一个空数组。
答案 0 :(得分:0)
首先,您不应使用 返回语句来执行异步功能。您应该使用完成处理程序来恢复商品。这是我如何从Parse获取图像并附加到数组的示例。
Swift 4.0
public func getImages(_ completion: @escaping (([UIImage]) -> Void)) {
guard let tempImages = self.images else { return }
var images = [UIImage]()
for image in tempImages {
image.getDataInBackground() {
( imageData, error) in
guard error == nil else { return }
guard let imageData = imageData else { return }
guard let image = UIImage(data: imageData) else { return }
images.append(image)
}
}
completion(images) // Its returning your images
}
你可以像这样调用你的getImages函数;
let images = self.yourObjectArrayInClass[(indexPath).row]
images.getImages() {
(images) in
DispatchQueue.main.async {
// Do something with your images.
}
}