在闭包之外访问数据
Accessing Data Outside of Closure
我的 class 中有一个数组,我试图在一个闭包中填充它。但是,当我尝试 access/print 数组内容时,它似乎在闭包之外是空的。如何存储数据以供在闭包之外使用?
for index in 0..<6 {
let picNumber = index + 1
if let pica = currentuser.objectForKey("pic\(picNumber)") as? PFFile {
pica.getDataInBackgroundWithBlock({ (data:NSData!, error:NSError!) -> Void in
if error == nil {
self.pic1 = UIImage(data: data)
var imageS = scaleImage(self.pic1!, and: 200)
self.imagesForSection0.append(imageS)
}
})
println(self.imagesForSection0)
}
}
闭包外不为空
方法getDataInBackgroundWithBlock
是async,这意味着它将return first.So,你在打印函数中什么也看不到。
文档
Asynchronously gets the data from cache if available or fetches its contents from the network.
编辑
for index in 0..<6 {
let picNumber = index + 1
if let pica = currentuser.objectForKey("pic\(picNumber)") as? PFFile {
pica.getDataInBackgroundWithBlock({ (data:NSData!, error:NSError!) -> Void in
if error == nil {
self.pic1 = UIImage(data: data)
var imageS = scaleImage(self.pic1!, and: 200)
self.imagesForSection0.append(imageS)
}
println(self.imagesForSection0)
//Then call reload data
})
}
}
我的 class 中有一个数组,我试图在一个闭包中填充它。但是,当我尝试 access/print 数组内容时,它似乎在闭包之外是空的。如何存储数据以供在闭包之外使用?
for index in 0..<6 {
let picNumber = index + 1
if let pica = currentuser.objectForKey("pic\(picNumber)") as? PFFile {
pica.getDataInBackgroundWithBlock({ (data:NSData!, error:NSError!) -> Void in
if error == nil {
self.pic1 = UIImage(data: data)
var imageS = scaleImage(self.pic1!, and: 200)
self.imagesForSection0.append(imageS)
}
})
println(self.imagesForSection0)
}
}
闭包外不为空
方法getDataInBackgroundWithBlock
是async,这意味着它将return first.So,你在打印函数中什么也看不到。
文档
Asynchronously gets the data from cache if available or fetches its contents from the network.
编辑
for index in 0..<6 {
let picNumber = index + 1
if let pica = currentuser.objectForKey("pic\(picNumber)") as? PFFile {
pica.getDataInBackgroundWithBlock({ (data:NSData!, error:NSError!) -> Void in
if error == nil {
self.pic1 = UIImage(data: data)
var imageS = scaleImage(self.pic1!, and: 200)
self.imagesForSection0.append(imageS)
}
println(self.imagesForSection0)
//Then call reload data
})
}
}