2014-05-14 8 views
5

Ich verwende Parse für das Back-End in meinem Projekt.Parse - Speichern verwandter Objekte

Wie Sie sich vorstellen können, gibt es im Datenmodell einige Beziehungen. Meistens erstelle ich ein "Eltern" -Objekt und alle seine "Kinder" gleichzeitig und speichere sie alle in Parse.

Jetzt, wenn dies getan wird, ist es notwendig, die Kinder einzeln zu retten? Das gleiche gilt für Dateien etc ...

Erstes Beispiel - Hinzufügen einen Avatar zu einem Benutzerobjekt

UIImage *image = // image from camera 
NSData *pngData = UIImagePNGRepresentation(image); 
PFFile *imageFile = [PFFile fileWithData:pngData]; 
[[PFUser currentUser] setObject:imageFile forKey:"avatar"]; 

OK, also auf dem Gerät ich die @"avatar" Taste auf dem Benutzer verweisen kann und den Avatar erhalten Datei. Aber wie soll das in Parse gespeichert werden?

Wenn ich das tue ...

[[PFUser currentUser] saveInBackground]; 

Wird das die neue Datei speichern, die hinzugefügt wurde? Oder muss ich zuerst die Datei speichern und warten, bis dies erfolgreich ist, bevor ich sie dann dem Benutzerobjekt hinzufüge und dann das Benutzerobjekt speichere?

Zweites Beispiel

einen Baum von Objekten Erstellen von ...

PFObject *family = [PFObject objectWithClassName:@"Family"]; 
[family setObject:@"Smith" forKey:@"familyName"]; 

PFObject *person1 = [PFObject objectWithClassName:@"Person"]; 
[person1 setObject:@"Bob" forKey:@"name"]; 

PFObject *person2 = [PFObject objectWithClassName:@"Person"]; 
[person2 setObject:@"Alice" forKey:@"name"]; 

PFObject *person3 = [PFObject objectWithClassName:@"Person"]; 
[person3 setObject:@"Chris" forKey:@"name"]; 

[family setObject:@[person1, person2, person3] forKey:@"members"]; 

Wie würde ich diese Sammlung von Objekten zu speichern?

Kann ich einfach ?

Oder muss ich einen Vorgang durchlaufen, in dem jedes Objekt zuerst Person gespeichert wird und überprüft wird, ob es funktioniert hat, bevor das family Objekt gespeichert wurde?

Antwort

3

Siehe Solange die Beziehung zwischen Eltern und Kind Pointer , müssen Sie das Kind nicht zuerst speichern. PFRelation funktioniert anders, aber ein Speichern des übergeordneten Objekts speichert auch untergeordnete Elemente, die als Zeiger gelten. Dies gilt für den Cloud-Code und ich bin mir ziemlich sicher, dass dies auch für das Gerät gilt.

Einige Details in dieser Antwort: https://www.parse.com/questions/cloud-code-efficient-hierarchy-saving

0

Ja, das tun wird ... in der Tat gibt es eine breite Palette von Methoden zum Speichern der Inhalte

Saving an Object to Parse 

– save 
– save: 
– saveInBackground 
– saveInBackgroundWithBlock: 
– saveInBackgroundWithTarget:selector: 
– saveEventually 
– saveEventually: 
Saving Many Objects to Parse 

+ saveAll: 
+ saveAll:error: 
+ saveAllInBackground: 
+ saveAllInBackground:block: 
+ saveAllInBackground:target:selector: 

Here für mehr

+0

Danke, es war mehr eine Frage, ob die Hierarchie gespeichert, wenn wenn die Eltern zu retten? Meistens benutze ich 'saveInBackgroundWithBlock:' habe mich nur gefragt, wie man Kinder einzeln speichert: D – Fogmeister

Verwandte Themen