Ios 从解析到UIImage数组的照片查询-Swift 2.0
我在下面得到“数组超出范围”错误。代码似乎没有执行内部块。它说我的数组中没有任何内容,但我的打印(objects.count)=7。我的解析表名为“Photos”,在一个名为“imageFile”的列中有7个pffile文件-我的getDataInBackgroundWithBlock一定有问题吗?我正在使用swift2和xcode 7谢谢Ios 从解析到UIImage数组的照片查询-Swift 2.0,ios,swift,parse-platform,uiimage,swift2,Ios,Swift,Parse Platform,Uiimage,Swift2,我在下面得到“数组超出范围”错误。代码似乎没有执行内部块。它说我的数组中没有任何内容,但我的打印(objects.count)=7。我的解析表名为“Photos”,在一个名为“imageFile”的列中有7个pffile文件-我的getDataInBackgroundWithBlock一定有问题吗?我正在使用swift2和xcode 7谢谢 var pageImages: [UIImage] = [] func xyz() { let query = PFQuery(cl
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,而不是1 所以你的数组索引应该是0-6,而不是1-7 因此:
祝您愉快:)尝试更新Swift 2更改的语法 更新查询
query.findObjectsInBackgroundWithBlock({
(objects: [AnyObject]?, error: NSError?) -> Void in
...
}
以下
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]?, error: NSError?) -> Void in
...
}
正如cnvinette所提到的,您应该避免直接引用数组索引,而这正是问题的直接原因。由于语法更改,数组未正确填充,导致以后出现数组越界错误。一定要研究重构,这样你的代码就不会变得脆弱。cvinette,我希望它能这么简单。不幸的是,阵列甚至没有填满UIImage。当我单步执行代码时,它会转到getDataInBackgroundWithBlock并跳到块的末尾,块内的任何内容都不会执行。当我将参数更改为PFObject时,我会出现以下错误:无法转换类型为“([PFObject]?,NSError?)的值->Void“到预期的参数类型”PFArrayResultBlock?“请仔细检查括号和大括号是否也已正确更新。如果它仍然抛出错误,您应该继续并用Parse提交错误报告。这正是他们在swift 2文档中展示的方式,因此如果这是错误的,他们需要知道。感谢Russell,我怀疑iOS9 ATS安全可能阻止了图像数据检索,尽管关闭ATS似乎没有帮助。我将对此问题进行分析。我收到以下ATS错误:“应用程序传输安全性已阻止明文HTTP(HTTP://)资源加载,因为它不安全。可以通过应用程序的Info.plist文件配置临时异常。”
query.findObjectsInBackgroundWithBlock {
(objects: [PFObject]?, error: NSError?) -> Void in
...
}