Swift 如何将文件追加到块中的数组
我有一些附加到数组中的文件,我在一个块中执行,但这些文件不会附加到数组中。我检查了文件是否为空,它们是否为空,因此这不是问题所在。我真的需要帮助。我被困了六个小时。ImageSource是github外图像数据的api。干杯Swift 如何将文件追加到块中的数组,swift,xcode,parse-platform,swift3,pffile,Swift,Xcode,Parse Platform,Swift3,Pffile,我有一些附加到数组中的文件,我在一个块中执行,但这些文件不会附加到数组中。我检查了文件是否为空,它们是否为空,因此这不是问题所在。我真的需要帮助。我被困了六个小时。ImageSource是github外图像数据的api。干杯 DispatchQueue.global(qos: .background).async { () -> Void in var files : [PFFile] = [] var photos2: [Ima
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!)
}
})
}
}
DispatchQueue.global(qos:.background).async{
()->在
变量文件:[PFFile]=[]
var photos2:[图像源]?
对于0中的i..文件将被附加到数组中-即,附加到文件
。但是文件
是一个局部变量,因此在块运行后,它将消失。如果您在其他位置有其他数组,或者如果您试图在异步块之外访问文件
的值,则该操作将失败。似乎是这样数组“photos2”为nil,因此函数“fullResolutionImageData(completion:)”什么也没做您需要在闭包外部声明数组,使其存在于闭包的作用域之外。在视图控制器的顶部创建一个数组属性(var files=[]),然后在闭包调用中
self.files.append(无论您添加什么)是文件.append(文件!)
line正在被调用?当我添加断点时,请让我检查是,当文件被添加到数组中时,它将被调用。为什么您会这样说?请您停止在问题上使用错误的标记。这个问题与iOS或Objective-C无关。这是一个快速的问题。我如何修复它。请提供建议,因为我不知道现在解决方案是“解决方案”为了什么?我不知道你想做什么-因为你没有告诉我。你只展示了你的代码片段,而你在该片段中展示的代码都没有任何问题。它的行为完全符合预期。这就是你的问题被否决的原因;没有问题,因此没有问题。不,我之前检查过,发现数据在fullResolutionImageData函数内的文件中,但在该函数外,数组为零。下面matt说的是对的,但我不知道如何修复它。如果是这样,您可以尝试移动数组“文件”的定义在调度结束之外保持生命周期你是什么意思宣布你在调度功能之外谈论什么