如何在IOS SDK中使用单个PFQuery更新n个PFObject

时间:2013-10-29 07:38:57

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

我在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。

1 个答案:

答案 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]);
    }
}];

希望这有帮助,我不完全确定你要做什么。