其中whereKey是指针的PFQuery

时间:2015-01-12 05:06:29

标签: ios objective-c arrays parse-platform pfquery

我有2个类:帖子类和用户类。我一直在尝试查询Posts类,只显示当前用户的帖子。我是这样做的:

[query whereKey:@"user" containedIn:[PFUser currentUser][@"followings"]];

专栏"以下"是包含当前用户的objectId的数组。我的问题似乎在于密钥@" user"在Posts类中是指向User类的指针并导致此错误:

Error: pointer field user needs a pointer value (Code: 102, Version: 1.2.10)

我应该怎么做?提前谢谢。

编辑1:添加信息

在这里,我提供了有关上述两个类的详细信息:

  • 帖子类

的ObjectID(字符串)----文本(字符串)----用户(指针)----...

  • 用户类

objectId(string)---- username(string)---- followings(users of users' objectId)----...

4 个答案:

答案 0 :(得分:8)

我使用 matchesQuery 查询了当前用户的帖子:

PFQuery *userQuery = [PFUser query];
[userQuery whereKey:@"objectId" containedIn:[PFUser currentUser][@"followings"]];
[query whereKey:@"user" matchesQuery:userQuery];

答案 1 :(得分:1)

检查回复有快速版本

//Create an user query
let userQuery = PFUser.query()
//get all PFUser contained in string array
userQuery?.whereKey("objectId", containedIn: PFUser.currentUser()!["FollowArray"]as! [String])
//add subquery
query.whereKey("user", matchesQuery: userQuery!)

答案 2 :(得分:0)

据我所知,你不能在Parse中的数组中有指针,你必须将用户的objectId放在数组“followings”中,然后在数组中搜索该值。那么你可以像这样搜索PFUser:

PFQuery *query = [PFUser query];
[query whereKey:@"objectId" equalTo:@"INSERT-OBJECT-ID-IN-ARRAY"];
PFUser *user = (PFUser *)[query getFirstObject];

答案 3 :(得分:0)

要获取当前用户的帖子,您需要使用用户来自解析的查询,其中您需要传递当前用户

我在这里发布一个小代码片段,可以给你清晰的想法

 PFQuery *query = [PFQuery queryWithClassName:@"PostTable"];

 [query whereKey:@"user"  equalTo:[PFUser currentUser]]; // "user" must be pointer in the post class (table)
 [query orderByDescending:@"createdAt"];
 [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {
          for (PFObject *obj in objects) {

           NSLog(@"object %@",obj);

           }


     }
    if (error) {
          [_delegate gotError:error forTable:TABLE_MEDIA];
     }
}];

在上面的代码片段中,它只会为您提供属于您当前用户的帖子。如果您想要任何其他用户的帖子,您应该通过该用户实例查询。

因此,要获得以下用户的帖子,您必须使用指针解析所有关注用户以及上述查询以获取他们的帖子。

要将指针放在Array中的单行中,请参阅下面的代码。

 [userClass addObject:userPointer forKey:@"following"];

所以,现在当你获得用户时,你将拥有所有以下用户指针,你可以通过上面的代码片段得到它的帖子