PFQuery将结果分类为多级数组

时间:2016-01-08 16:49:56

标签: swift parse-platform

我正在尝试多次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 个答案:

答案 0 :(得分:1)

我会使用两个单独的查询功能: 1)获取他们的ID 2)为他们的照片。

对于第一个查询:您需要更改哪些内容?

您的objectID数组应该是NSMutableArray类型,因为要获取其信息,您应该使用约束 whereKey containedIn 而非 whereKey equalTo 对于那个约束,你应该低估你的NSMutableArray to type AnyObject

同时将您的groupIds类型更改为NSMutableArray ,然后附加您的数组。

对于第二个查询:

由于你的groupIds Type已经是NSMutableArray,只需将其转换为AnyObject,然后使用 whereKey containedIn

  

注意:在附加你的图片之前下载所有图片会更好   阵列。因此,您可以选择使用structclass(更容易使用)   将数据分组到其所有者)然后创建该数据的数组   结构。因为它更容易填充你的UI。