【问题标题】:Issue retrieving pfobject data from pointer in Parse.com从 Parse.com 中的指针检索 pfobject 数据的问题
【发布时间】:2014-05-20 16:49:01
【问题描述】:

我在从解析查询中获得的对象中的指针获取数据时遇到问题。我在查询中使用了包含键,但在从返回的对象数组中获取包含键信息时遇到问题。我创建了一个 for 循环来迭代结果,但不确定如何将它们存储回数组中。下面是我的代码:

- (void) loadUsersPFUserIsFollowing
    {


        //Retrieving PFUser Curren Users followers and storing in Array
        PFQuery *queryFollowingCount = [PFQuery queryWithClassName:@"Activity"];
        [queryFollowingCount whereKey:@"type" equalTo:@"follow"];
        [queryFollowingCount whereKey:@"fromUser" equalTo:[PFUser currentUser]];

        //Access the the user following informatioin
        [queryFollowingCount includeKey:@"toUser"];

        //[queryFollowingCount setCachePolicy:kPFCachePolicyCacheThenNetwork];

        [queryFollowingCount findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            [HUD hide:YES];
            if (!error) {

               searchResultsArray = [[NSArray alloc] initWithArray:objects];            

               NSLog(@"%@", objects);

                for (PFObject * postObject in objects) {

                   PFObject *postAuthor = [postObject objectForKey:@"toUser"][@"username"];



                    NSLog(@"retrieved related Post Author: %@", postAuthor);
                }

                  [self.tableView reloadData];

            } else {
                NSLog(@"Something went wrong");
                NSLog(@"%@", error);
            }
        }];

    }

【问题讨论】:

    标签: ios nsarray parse-platform


    【解决方案1】:
    for (PFObject * postObject in objects) {
         PFObject *postAuthor = [postObject objectForKey:@"toUser"][@"username"];
    
         NSLog(@"retrieved related Post Author: %@", postAuthor);
    }
    

    默认情况下,在获取对象时,不会获取相关的 PFObject。这些对象的值在被获取之前无法检索,如下所示:

    for (PFObject * postObject in objects) {
    
         //Im assuming in your code, postObject is either nil or it's there but it's values are nil except its objectId. We need to fetch this object. 
         [postObject fetchIfNeededInBackgroundWithBlock:^(PFObject *object, NSError *error){
    
              PFObject *postAuthor = [object objectForKey:@"toUser"][@"username"];
    
              NSLog(@"retrieved related Post Author: %@", postAuthor);
    
             [self.tableView reloadData];
    
          }];
    }
    

    【讨论】:

    • 啊啊啊啊!我实现了一个搜索,它将过滤返回的结果。我试图将每个 fetch pfobject 存储到一个数组中,以便我可以使用 search 过滤结果,但我看到 fetchIf.. 只返回一个对象。还是我读错了?
    • 您的初始查询queryFollowingCount 将返回顶级对象及其属性。指向其他对象的指针在那里但有问题,所以它只是您的顶级对象指向的PFObjects 中的一堆objectIds。您必须单独获取您指向的每个对象。
    • 知道了,我必须将我的查询细化为复合查询才能得到我正在寻找的结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多