2015-09-28 27 views
0

我得到'數組超出範圍'的錯誤與下面。代碼似乎沒有執行內部塊。它說我的數組沒有任何內容,但是我的print(objects.count)= 7。我的Parse表名是「Photos」,它在名爲「imageFile」的列中有7個PFFiles - 我的getDataInBackgroundWithBlock必須有錯誤嗎?我正在使用swift2和xcode 7謝謝!查詢照片從解析到UIImage數組 - Swift 2.0

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,而不是1!

所以你的數組索引應該是0-6,而不是1-7!

所以:

self.imageView1.image = pageImages[0] 
self.imageView2.image = pageImages[1] 
self.imageView3.image = pageImages[2] 

有一個好的一天:)

+0

cvinette,我希望它很簡單。不幸的是,陣列甚至沒有填滿UIImages。當我遍歷代碼時,它會轉到getDataInBackgroundWithBlock並跳轉到塊的結尾,塊內沒有任何內容被執行。 – JVett

0

嘗試更新語法雨燕2的變化。 The iOS guide has been updated

更新查詢

query.findObjectsInBackgroundWithBlock({ 
    (objects: [AnyObject]?, error: NSError?) -> Void in 
    ... 
} 

以下

query.findObjectsInBackgroundWithBlock { 
    (objects: [PFObject]?, error: NSError?) -> Void in 
    ... 
} 

正如cnvinette已經提到的,你應該避開直接引用數組索引的,這是什麼直接導致了問題。由於語法更改,數組未正確填充,導致稍後出現數組超出界限的錯誤。絕對考慮重構,以便你的代碼不是脆弱的。

+0

當我將參數改變爲PFObject時,出現以下錯誤:無法將類型'([PFObject]?,NSError?) - > Void'轉換爲預期參數類型'PFArrayResultBlock?' – JVett

+0

仔細檢查括號和花括號是否已正確更新。如果它仍然拋出錯誤,您應該繼續並使用Parse提交錯誤報告。這正是他們在swift 2文檔中展示的方式,所以如果錯了,他們需要了解它。 – Russell

+0

謝謝羅素,我很懷疑,也許iOS9 ATS安全防止imageData檢索,雖然關閉ATS似乎沒有幫助。我將把這個問題解析。 – JVett