Как обновить n количество PFObjects с помощью одного PFQuery в IOS SDK

Я использую Parse.com в приложении IOS. В этом я использую один фон класса, который содержит значения другого класса в виде строки, такой как массив. Я хочу обновить массив этих значений без использования цикла for. Я хочу обновить только один вызов PFQuery.

Класс

Изображение -- id – изображение (PFFile) – количество (целое число)

Фон -- id - imagesArr (Массив)

Класс Background содержит идентификаторы изображений в imagesArr. Я хочу обновить одну строку в фоновом режиме. Затем мне нужно обновить все изображения, для которых 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. Я чувствовал, что это приводит к снижению производительности приложения.

Вместо этого мы можем обновить все изображения в фоновой строке imagesArr id с помощью одного единственного PFQuery.

Пожалуйста, помогите мне в этом вопросе.

Заранее спасибо.


person KAREEM MAHAMMED    schedule 29.10.2013    source источник
comment
Вы пробовали saveAll или saveAllInBackground ? Не совсем понятно, чего вы пытаетесь достичь. ПРИМЕЧАНИЕ. Вам не нужно запрашивать PFObject, если вы знаете этот objectId и уверены, что объект существует на сервере.   -  person Priyatham51    schedule 29.10.2013
comment
Спасибо за ответ, я никогда не пробовал saveAll до сих пор. Я рассмотрю его.   -  person KAREEM MAHAMMED    schedule 29.10.2013


Ответы (1)


Это немного сбивает с толку, потому что вы продолжаете говорить, что обновляете запрос. Запросы предназначены для извлечения объектов.

При этом вложенные объекты сохраняются автоматически. Например

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

Надеюсь, это поможет, я не совсем уверен, что вы пытаетесь сделать.

person Logan    schedule 31.01.2014