2016-01-08 14 views
0

我正在嘗試執行多個PFQuery並正確存儲數據。PFQuery將結果分類爲多級陣列

我的計劃是查詢我的Group 中的組成員我正在查找密鑰member。它給了我一個objectIds的數組。然後我想在我的_User課中查詢他們的圖片,密鑰爲firstImage。顯示數據不是問題,只需要正確的方法。

數據需要考慮它的組來存儲。這是我到目前爲止的嘗試:

let fetchGroupsQuery = PFQuery(className: "Group") 
     fetchGroupsQuery.whereKey("member", equalTo: objectID!) 
     fetchGroupsQuery.findObjectsInBackgroundWithBlock { (objects, error) -> Void in 
      if error != nil 
      { 
      } 
     else { 

    if let objects = objects { 
    self.memberPhotos.removeAll() 

     for object in objects { 

    if let member = object["member"] as? [String] 
    { 
     // returns array of objectIds 
      for user in member 
      { 
       // returns single ids       
       self.groupIds.append(user) 

    let photoQuery = PFUser.query() 
    photoQuery?.whereKey("objectId", equalTo: user) 
photoQuery?.findObjectsInBackgroundWithBlock({ (results, error) -> Void in 
     if error != nil { 
    // .... 
    } 
     else { 
    self.memberPhotos.removeAll() 
     if let results = results 
     { 
      for result in results 
      { 
       if result["firstImage"] != nil 
       { 
       self.memberPhotos.append(result["firstImage"]) 
       } 
     } 
    } 
    }}) 
    } 
} 

我的想法是將數據存儲在數組中。 以便我可以稍後進入array[indexPath.row]以獲取我需要循環的數組以獲取正確的組圖片。

任何想法如何解決這個問題?

回答

1

我會使用兩個單獨的查詢功能: 1)得到他們的ID 2)了他們的照片。

對於第一個查詢:你需要改變什麼?

objectID陣列應該因爲爲了獲取自己的信息,你應該使用約束whereKey containedIn沒有whereKey equalTo 併爲約束,你應該垂頭喪氣的NSMutableArray to type AnyObject是類型NSMutableArray的。

還要更改您的groupIds類型爲NSMutableArray,然後附加您的數組。

對於第二個查詢:

由於您的組id類型已經是NSMutableArray的只是將它轉換爲AnyObject,然後使用whereKey containedIn

注:這將是更好之前下載的所有圖片附加您的 陣列。因此,您可以選擇使用structclass(更容易將 組數據發送給其所有者),然後創建該數據的陣列 結構。因爲它更容易填充您的UI。

+0

感謝您的詳細解答。我有一個檢查「containedIn」的問題,因爲我的查詢還沒有完成,但xCode正在檢查我的數組中的元素是0。有沒有辦法解決這個問題? – JVS