将pffile的数组转换为uiimage in in for loop返回空阵列swift



i ma试图采用类型的pffile数组,并将其转换为类型的UIImage数组。我使用以下代码,无论它总是返回一个空数组。任何帮助深表感谢。

用户images vassed是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的填充阵列)。但是返回的值仍然是一个空数组。

首先,您的不应使用返回语句async函数。您应该使用完成处理程序将您的物品收回。这是我如何从解析获得图像并将其附加到数组的示例。

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.
        }
    }

最新更新