-3

我有要附加到数组的文件,并且在块内执行,但文件不会附加到数组。我检查了文件是否为空并且它们不是,所以这不是问题。我真的需要帮助。我被困了六个小时。ImageSource 是 github 上图像数据的 api。干杯。

    DispatchQueue.global(qos: .background).async {
        () -> Void in

        var files : [PFFile] = [] 
        var photos2: [ImageSource]?
      for i in 0..<13 {
                let indexpath = IndexPath(item: i, section: 0)
                photos2?[indexpath.row].fullResolutionImageData(completion: { (Data) in
                    if let imageData = Data, let image = UIImage(data: imageData), let data = UIImageJPEGRepresentation(image, 1.0){
                    let file = PFFile(data: data)

                            files.append(file!)

                    }
                })
        }
  }
4

3 回答 3

0

数组“photos2”似乎为零,所以函数“fullResolutionImageData(completion:)”什么也没做

于 2017-06-26T10:17:31.237 回答
0

这些文件附加到数组中——即,附加到files. 但是files是一个局部变量,所以在块运行之后,它就消失了。如果您在其他地方有其他数组,或者您试图访问files异步块之外的值,那将失败。

于 2017-06-25T22:26:24.803 回答
0

您需要在闭包之外声明您的数组,以便它存在于闭包范围之外。在视图控制器的顶部创建一个数组属性(var files = []),然后在闭包调用中

self.files.append(无论你附加什么)

于 2017-06-27T07:14:29.713 回答