我正在尝试多次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]
来获取我需要循环的数组,以获得正确的组图片。
任何想法如何解决这个问题?
答案 0 :(得分:1)
我会使用两个单独的查询功能: 1)获取他们的ID 2)为他们的照片。
对于第一个查询:您需要更改哪些内容?
您的objectID
数组应该是NSMutableArray
类型,因为要获取其信息,您应该使用约束 whereKey containedIn 而非 whereKey equalTo
对于那个约束,你应该低估你的NSMutableArray to type AnyObject
。
同时将您的groupIds类型更改为NSMutableArray ,然后附加您的数组。
对于第二个查询:
由于你的groupIds Type已经是NSMutableArray,只需将其转换为AnyObject,然后使用 whereKey containedIn
注意:在附加你的图片之前下载所有图片会更好 阵列。因此,您可以选择使用
struct
或class
(更容易使用) 将数据分组到其所有者)然后创建该数据的数组 结构。因为它更容易填充你的UI。