簡體   English   中英

在for循環中將PFFile數組轉換為UIImage返回空數組Swift

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM