【问题标题】:PFUser array of pointers column, fetch objects for currentUserPFUser 指针列数组,为 currentUser 获取对象
【发布时间】:2015-03-20 07:28:29
【问题描述】:

我的 PFUser 子类包含一个作为指针数组的列。显示 [PFUser currentUser] 个人资料页面时,不包含数组对象并调用

[[PFUser currentUser fetchIfNeededInBackground] 

也不会获取指针对象。

如果列是单个指针,我可以调用

[currentUser[@"pointerColumn"] fetchIfNeedInBackground]

但该方法的参数是 PFObject 而不是指针数组。

我可以为数组中的每个对象调用 fetchIfNeededInBackgroundWithBlock,但这会对 PFUser 类中的单个列产生许多请求。

for (PFObject * obj in currentUserArrayOfPointers) {
  [obj fetchIfNeededInBackgroundWithBlock:^(PFObject *object, NSError *error){
    [self.tableView reloadData];
  }];
}

有没有更好的方法来获取 [PFUser currentUser] 的指针列数组?

(并保持“fetchIfNeeded”的行为,如果对象已被获取,则避免每次都进行新查询。)

【问题讨论】:

  • 当您说指针数组时,您的意思是对象 ID 数组吗?
  • 指针数组如下所示: [{"__type":"Pointer","className":"myClassName","objectId":"7sdf8sdf9j"}, {"__type":"Pointer" ,"className":"myClassName","objectId":"7fge8agfd9"}]

标签: arrays pointers parse-platform


【解决方案1】:

您可以做的是获取 currentUserArrayOfPointers 中的所有 objectId,然后使用此参数进行解析查询:

NSMutableArray *userObjectIds = [[NSMutableArray alloc] init];
for (PFObject * obj in currentUserArrayOfPointers) {
    [userObjectIds add:object.objectId];
}

PFQuery *query = [PFQuery queryWithClassName:@"SomeClass"];
[query whereKey:@"objectId" containedIn:userObjectIds];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error {
    ...
}];

这样您就可以通过一次查询获得所有用户。

【讨论】:

  • 感谢您的想法,这确实解决了多个查询的问题。不过有一个问题。 arrayOfPointers 是 PFUser 类中的一列。当 currentUser 打开他的个人资料页面时,我需要显示此信息。使用这种方法,如果我没记错的话,每次currentUser打开个人资料页面时都会发出一个新的请求?如果用户已经打开了他的个人资料页面一次,如果对象已经被获取一次,有没有办法避免请求?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多