【发布时间】:2015-07-13 03:02:46
【问题描述】:
我在理解块的具体工作原理方面遇到了一点问题。
for x in self.activerestaurantIDArray
{
let namelabel = x.0
self.activenameArray.append(namelabel)
let distancelabel = x.1
self.activedistanceArray.append(distancelabel)
let imageFile = x.2
imageFile.getDataInBackgroundWithBlock({ (imageData: NSData?, error: NSError?) -> Void in
if error == nil {
let realimage = UIImage(data: imageData!)
self.activeimageArray.append(realimage!)
}
println(self.activenameArray)
println(self.activedistanceArray)
println(self.activeimageArray)
})
}
在上面的代码中,我将信息附加到元组中的一个数组(命名为:activerestaurantIDArray),以便获得名称、距离和图像的单独数组。至于图像,我只能从解析中检索 PFFile,因此我必须将文件转换为 UIImage。
但是,当我这样做时,只有当 println() 位于块 (imageFile.getDataInBackgroundWithBlock) 内时,activeImageArray 的附加才有效。
如果我在盒子外面的任何地方println(self.activeimageArray),数组将变成零。我不确定为什么会发生这种情况,或者我应该如何确保附加值超出 Block{}。任何帮助将不胜感激。
【问题讨论】:
标签: arrays swift parse-platform closures objective-c-blocks