Ios 从解析到UIImage数组的照片查询-Swift 2.0

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

我在下面得到“数组超出范围”错误。代码似乎没有执行内部块。它说我的数组中没有任何内容,但我的打印(objects.count)=7。我的解析表名为“Photos”,在一个名为“imageFile”的列中有7个pffile文件-我的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,而不是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
    ...
}