在for循环中将PFFile数组转换为UIImage返回空数组Swift

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在for循环中将PFFile数组转换为UIImage返回空数组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获取图像并附加到数组的示例。

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

以上是关于在for循环中将PFFile数组转换为UIImage返回空数组Swift的主要内容,如果未能解决你的问题,请参考以下文章

pyspark 在循环中将数组转换为字符串

在 Java 中将基元数组转换为容器数组

如何在 Swift 中将 Floats 的 ContiguousArray 转换为字节数组?

在 Python 中将列表理解转换为 For 循环

在R中将嵌套的for循环转换为并行

在 for 循环中将 Python Dask 系列转换为列表或 Dask DataFrame