【问题标题】:PFQuery in which whereKey is pointerPFQuery 其中 whereKey 是指针
【发布时间】:2015-01-12 05:06:29
【问题描述】:

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

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

“followings”列是包含当前用户关注的 objectId 的数组。我的问题似乎在于 Posts 类中的关键 @"user" 是指向 User 类的指针并导致此错误:

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

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

Edit1:已添加信息

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

  • 帖子类

objectId(string)----text(string)----user(pointer)----...

  • 用户类

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

【问题讨论】:

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


    【解决方案1】:

    我已经使用 ma​​tchesQuery 实现了只查询当前用户关注的帖子:

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

    【讨论】:

      【解决方案2】:

      已检查的响应有 swift 版本

      //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!)
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 数组中没有指针,只有当前用户关注的objectId(userId)。我想要实现的是如何在用户类中用代表 objectId 的东西替换 kPAWParseUserKey?
        • 你错了,带有指针的数组列很常见,而不是直接存储 ID 是首选方法。
        【解决方案4】:

        要仅获取当前用户的帖子,您需要 user Where 查询来自您需要传递当前用户的解析

        我在这里贴一个小代码sn-p,可以给你一个清晰的思路

         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];
             }
        }];
        

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

        因此,要获得关注用户的帖子,您必须从解析指针中获取所有关注用户,并通过上述查询来获取他们的帖子。

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-24
          • 2014-08-15
          • 2016-05-16
          • 2012-03-15
          • 2018-06-10
          • 1970-01-01
          相关资源
          最近更新 更多