[英]Converting array of PFFile to UIImage in for loop returns empty array Swift
我試圖將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類型的數組)。 但是返回的值仍然是一個空數組。
首先,您不應該對異步函數使用 return語句。 您應該使用完成處理程序來取回項目。 這是我如何從Parse獲取圖像並將其追加到數組的示例。
迅捷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.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.