【问题标题】:Parse Query Objects From Lookup Table从查找表中解析查询对象
【发布时间】:2015-09-29 18:21:08
【问题描述】:

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

我的想法是构建一个查询,在查找表中查询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,它将返回当前用户是发送者或接收者的正确行。我想将该行数组作为用户对象而不是 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];

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

【问题讨论】:

    标签: ios objective-c parse-platform pfquery


    【解决方案1】:

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

    【讨论】:

    • 谢谢!我认为我试图仅通过查询来完成它使它过于复杂
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2022-01-05
    • 2011-08-21
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多