Objective C使用两个等级的类来解析查询结果

时间:2016-10-07 20:22:38

标签: objective-c xcode parse-platform

我目前在目标c中有一个Parse查询,它使用一个类(Photo)来检索数据。

PFQuery *photosFromUsersQuery = [PFQuery queryWithClassName:@"photo"];
[photosFromUsersQuery whereKeyDoesNotExist:@"type"];
[photosFromUsersQuery whereKeyExists:kESPhotoPictureKey];
[photosFromUsersQuery whereKey:@"createdAt" greaterThanOrEqualTo:sevenDaysAgo];

PFQuery *videosFromUserQuery = [PFQuery queryWithClassName:self.parseClassName];
[videosFromUserQuery whereKeyExists:@"type"];
[videosFromUserQuery whereKey:@"createdAt" greaterThanOrEqualTo:sevenDaysAgo];

PFQuery *query = [PFQuery orQueryWithSubqueries:[NSArray arrayWithObjects:photosFromUsersQuery, videosFromUserQuery, nil]];

[query includeKey:kESPhotoUserKey];
[query orderByDescending:@"createdAt"];

我现在需要使用第二个类(user),它是两个类中的指针。
我想过滤上面查询中的数据,只显示用户拥有公共个人资料的数据。在用户类中,我有一个名为privacy的列,其中包含Public或Private值。

我尝试了很多方法,但没有一种方法有效。
请帮助我完成这项任务。

谢谢

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找matchesQuery选项。我没有做太多的事情,但看起来应该是这样的。

PFQuery *photosFromUsersQuery = [PFQuery queryWithClassName:@"photo"];
[photosFromUsersQuery whereKeyDoesNotExist:@"type"];
[photosFromUsersQuery whereKeyExists:kESPhotoPictureKey];
[photosFromUsersQuery whereKey:@"createdAt" greaterThanOrEqualTo:sevenDaysAgo];

PFQuery *videosFromUserQuery = [PFQuery queryWithClassName:self.parseClassName];
[videosFromUserQuery whereKeyExists:@"type"];
[videosFromUserQuery whereKey:@"createdAt" greaterThanOrEqualTo:sevenDaysAgo];

PFQuery *query = [PFQuery orQueryWithSubqueries:[NSArray arrayWithObjects:photosFromUsersQuery, videosFromUserQuery, nil]];

PFQuery *userQuery = [PFQuery queryWithClassName:@"User"]
[userQuery whereKey:@"privacy" equalTo:@"Public"]
[query whereKey:@kESPhotoUserKey matchesQuery: userQuery]
[query orderByDescending:@"createdAt"];