我在IOS应用程序中使用Parse.com。因为我使用一个类背景,其中包含另一个类值作为数组的行。 我想在不使用for循环的情况下更新这些值的数组。我想只用一个单PFQuery调用进行更新。
类
图片 - id - 图片( PFFile ) - 计数(整数)
背景 - id - imagesArr(数组)
Background类包含imagesArr中的图像ID。我想在后台更新一行。然后我需要更新所有图像,这些图像是imagesArr在图像类中增加其计数列。
我们可以通过使用for循环来实现。
喜欢
[bgQuery findObjectinBackground:^(NSArray * imageIds, NSError *error)
{
if(!error)
{
for(int i= 0; i<imageIds.count; i++)
{
NSString *imageId = [imagesIds objectAtIndex:i];
PFQuery *getImageQuery = [PFquery queryWithClassName:@"Image"];
[getImageQuery getObjectWithIdInBackground:imageId withBlock]
// Code for refresh
}
}
}
我们可以通过使用来实现。但我需要执行n个PFQueries。我觉得这会导致应用程序性能变慢。
我们可以用一个PFQuery更新Background row imagesArr id中的所有图像,而不是这个。
请在这个问题上帮助我。
感谢advnace。
答案 0 :(得分:0)
这有点令人困惑,因为您一直在说您正在使用查询进行更新。查询用于检索对象。
话虽如此,嵌套对象会自动保存。例如
PFObject * object1 = [PFObject objectWithClassName:@"Object1"];
PFObject * object2 = [PFObject objectWithClassName:@"Object2"];
object1[@"object2ref"] = object2;
[object1 save]; // this should save object 2 as well.
如果你多次这样做并且有一个Object1的数组
[PFObject saveAllInBackground:arrayOfObject1objects]; // will save all object 1's, and object 2's
检索对象。
PFQuery * query = [PFQuery queryWithClassName:@"Object1];
[query includeKey:@"object2Ref"]
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
// all objects, and object2ref data should be available
}
else {
NSLog(@"Error, %@ %@",error,[error userInfo]);
}
}];
希望这有帮助,我不完全确定你要做什么。