我正在使用下面的'数组超出范围'错误。代码似乎没有执行内部块。它说我的数组中没有任何东西,但是我的print(objects.count)= 7.我的Parse表名是“Photos”,它在名为“imageFile”的列中有7个PFFiles - 我的getDataInBackgroundWithBlock一定有问题吗?我正在使用swift2和xcode 7谢谢!
var pageImages: [UIImage] = []
func xyz() {
let query = PFQuery(className:"Photos")
query.whereKey("userId", equalTo: (PFUser.currentUser()!.objectId)!)
query.findObjectsInBackgroundWithBlock({
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
for object in objects! {
let userPicture = object["imageFile"] as! PFFile
userPicture.getDataInBackgroundWithBlock { (imageData: NSData?, error: NSError?) -> Void in
if (error == nil) {
let image = UIImage(data:imageData!)
self.pageImages.append(image!)
print("pageImages.count \(self.pageImages.count)")
}
}
}
print("objects.count \(objects!.count)")
print("pageImagesOutside.count \(self.pageImages.count)")
}
self.loadPage()
}) }
self.imageView1.image = pageImages[1]
self.imageView2.image = pageImages[2]
self.imageView3.image = pageImages[3]
self.imageView4.image = pageImages[4]
self.imageView5.image = pageImages[5]
self.imageView6.image = pageImages[6]
self.imageView7.image = pageImages[7]
答案 0 :(得分:0)
第一项或数组的第一个索引是0,而不是1!
所以你的数组索引应该是0-6,而不是1-7!
所以:
self.imageView1.image = pageImages[0]
self.imageView2.image = pageImages[1]
self.imageView3.image = pageImages[2]
祝你有个美好的一天:)
答案 1 :(得分:0)
尝试更新Swift 2更改的语法。 The iOS guide has been updated
更新查询
query.findObjectsInBackgroundWithBlock({
(objects: [AnyObject]?, error: NSError?) -> Void in
...
}
以下
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]?, error: NSError?) -> Void in
...
}
正如cnvinette所提到的,你应该避免直接引用数组索引,这就是直接导致问题的原因。由于语法更改,数组未正确填充,导致稍后出现数组越界错误。绝对要考虑重构,这样你的代码就不会脆弱了。