如何从“用户”表中检索数组字段并从其他表中获取记录?解析

时间:2015-03-05 01:01:43

标签: ios parse-platform relation

我在解析时有3个表

  • 用户表 - 包含他们关注的用户和列表
  • 列表 - 具有用户创建的列表
  • 消息表 - 从列表中记录的指针

用户可以关注多个列表,因此所有列表ID都存储为对应于列表中记录的对象ID数组

当我打电话

NSArray *convArr = [[PFUser currentUser] objectForKey:@"lists"];

它显示有列表对象,但它看起来好像是空的,我无法从中检索值以进一步查询列表表以获取列表用户正在关注

For all the users and their list I have 


PFQuery *uQuery = [PFUser query];
[uQuery includeKey:@"lists"];
[uQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    ...
}];

但我无法在查询中传递当前用户信息。

[uQuery whereKey:@"user" equalTo:[PFUser currentUser]]; or
[uQuery includeKey:[PFUser currentUser].objectId];

添加任何此功能都不会为当前用户提取记录。

2 个答案:

答案 0 :(得分:0)

您可以尝试刷新当前用户,以便从服务器中提取最新数据,然后查看列表对象。

[[PFUser currentUser] fetchInBackgroundWithBlock:^(PFObject *user, NSError *error){
  NSArray *convArr = [user objectForKey:@"lists"];
}];

答案 1 :(得分:0)

好的,无论如何我都会尝试。

我将假设您有一个currentUser,您想要检索所有列表。你可以这样做一个简单的查询(Ofcourse假设你有一个包含他所做列表的objectIds的数组):

PFQuery *query = [PFQuery queryWithClassName:@"List"];
[query whereKey:@"objectId" containedIn:currentUser[@"lists"];
[query findObjectsInBackgroundWithBlock:^(NSArray *lists, NSError *error) {
    //This should return all the lists based on the keys inside the column of lists from the current User
}

如果你想为每个用户做这个,你必须首先查询用户,那么基本上做同样的事情,而不是用户“currentUser [@”列出“]”,你会使用类似的东西“ queriedUser [@ “名单”]”。请原谅我可怕的语法。

另一个用于查找正确“查询约束”的方便工具可能就是link

我希望这至少对你有所帮助!