我有一个PFObjects
的NSArray
,并且希望一次性获取与该数组中的对象相关的所有数据,因此之后不需要进行新的调用来解析。我该怎么做?
我的答案是假设您想要的数组包含在PFObject中。您可以查询此对象,并使用include键来包含该键中包含的数组。
PFQuery *query = [PFQuery queryWithClassName:@"<object's class name>"];
[query whereKey:@"objectId" equalTo:object.objectId];
[query includeKey:@"<array key>"];
如果数组中的对象有指向其中其他对象的指针,则可以使用点语法一次获取所有内容。
[query includeKey@"<array key>.<pointer in object from array key>"];
设置好后运行查询,您应该检索一个对象的数组,因为objectId是唯一的,在这个对象中将是数组。
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error){
if(error){
// handle error
}else{
if([objects count] > 0){
PFObject *object = objects[0]; // Only one matching object to query
NSArray *array = object[@"<array key>"]; // Array you want
}
}
}];
您可以使用PFObject的方法家族:
+(void)fetchAll:(NSArray*)objects
查看PFObject关于这些方法的文档https://parse.com/docs/ios/api/Classes/PFObject.html#//api/name/fetchAll:
到目前为止,我得到的查询可能是-
PFQuery *query = [PFQuery queryWithClassName:@"CLASS_NAME"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
{
if (!error && objects.count != 0)
{
NSLog(@"Successfully retrieved: %@", objects);
for(int i=0; i< objects.count; i--)
{
NSDictionary *dict = [objects objectAtIndex:i];
self.label = [dict objectForKey:@"PROPERTY_KEY"]; //Just example
/* Also modify this code as per you want to fetch properties of some or all */
/* Do as you want to with properties and also change key as per need of column/property you want */
}
}
}];
通过这种方式,您将获得数组,并根据需要获取fetch。