0

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

     } 
   } 
}

我们可以通过使用 for 来做到这一点。但我需要执行 n 个 PFQueries。我觉得这会降低应用程序的性能。

相反,我们可以使用一个 PFQuery 更新背景行 imagesArr id 中的所有图像。

请在这个问题上帮助我。

提前感谢。

4

1 回答 1

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

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

于 2014-01-31T23:17:13.557 回答