ios - 从查找表中解析查询对象

标签 ios objective-c parse-platform pfquery

我正在尝试编写一个 PFQuery 来获取用户的 friend 作为 User 对象。下面显示的是我的用户表和 friend 查找表。当用户创建好友时,将在好友查找表中添加一个条目。

DB Structure

我的想法是构建一个查询,在 Lookup 表中查询 sendingUserreceivingUser 等于当前用户的任何行。

NSString * const kPULLookupSendingUserKey = @"sendingUser";
NSString * const kPULLookupReceivingUserKey = @"receivingUser";
....
PULUser *acct = [PULUser currentUser];
// query where sending user is current user
PFQuery *senderQuery = [PFQuery queryWithClassName:@"FriendLookup"];
[senderQuery whereKey:kPULLookupSendingUserKey equalTo:acct];

// query where receiving user is current user
PFQuery *recQuery = [PFQuery queryWithClassName:@"FriendLookup"];
[recQuery whereKey:kPULLookupReceivingUserKey equalTo:acct];

// query that ORs the previous two together and adds a couple more constraints
PFQuery *lookupQuery = [PFQuery orQueryWithSubqueries:@[senderQuery, recQuery]];
[lookupQuery whereKey:@"isBlocked" equalTo:@NO];
[lookupQuery whereKey:@"isAccepted" equalTo:@YES];

如果我只运行 lookupQuery,它会返回当前用户是发送者或接收者的正确行。我想将该行数组作为 User 对象而不是 FriendLookup 对象。

注意 PULUserPFUser 的子类

// query for user where sending user key matches OID
PFQuery *userQuerySender = [PULUser query];
[userQuerySender whereKey:@"objectId" matchesKey:kPULLookupSendingUserKey inQuery:lookupQuery];

// query for user where receiving user key matches OID
PFQuery *userQueryRec = [PULUser query];
[userQueryRec whereKey:@"objectId" matchesKey:kPULLookupReceivingUserKey inQuery:lookupQuery];

// join queries together in an OR
PFQuery *query = [PFQuery orQueryWithSubqueries:@[userQuerySender, userQueryRec]];
// exclude self user from query
[query whereKey:@"objectId" notEqualTo:acct.objectId];

这将返回一个空数组。关于如何正确形成此查询的任何想法?或者是否有一种不同的方法来存储友谊可以使这项任务更容易。

最佳答案

使用include key使查询结果包含指向2个用户的指针,然后将所有用户组成一个集合并删除当前用户,然后您将拥有所有用户而无需进行二次查询。

关于ios - 从查找表中解析查询对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32851139/

相关文章:

php - 检测从 Android 应用程序调用的 URL

ios - 从 HKSampleQuery(Swift 4) 访问元数据

iphone - 更新应用程序时是否有可能更改目录?

php - bp_core_signup_user Hook 不起作用(PHP、BuddyPress、Wordpress 和 Parse.com)

ios - Parse.com WhereKey :containedIn doesn`t show any results - objectId

swift - 如何使用 Parse Server API 格式在 iOS 中存储和访问 JSON?

ios - UITabBarController 的 Font Awesome

iOS 本地化、模拟器和设备始终使用 Base.lproj 而不是用户首选的区域设置

ios - 带有 keyboardWillShow 的 UITableView 和 UIView

ios - 如何检测一个 NSString 是否包含一个大写字母