2013-10-29 19 views
0

我在IOS應用程序中使用Parse.com。在這我使用一個類的背景,其中包含另一個類的值像行數組。 我想更新這些值的數組而不使用for循環。我想只更新一個單一的PFQuery調用。如何在IOS SDK中使用單個PFQuery更新n個PFObjects

圖片 - 編號 - 圖像(PFFile) - 計數(整數

背景 - 編號 - imagesArr(陣列

Background類包含imagesArr中的圖像ID。我想在後臺更新一行。然後我需要更新ImageArr中ImageArr增加其計數列的所有圖像。

我們可以使用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更新後臺行imagesArr標識中的所有圖像。

請幫我解決這個問題。

感謝advnace。

+0

你試過'saveAll'還是'saveAllInBackground'?這是不是很清楚你想要實現什麼。注意:如果知道objectId並且您確定該對象在服務器上存在,則不需要查詢PFObject。 – Priyatham51

+0

感謝您的回覆 我從來沒有嘗試saveAll直到現在。我會審查它。 –

回答

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

希望這可以幫助,我不完全確定你要做什麼。

相關問題