2014-05-14 19 views
5

Sto utilizzando Parse per il back-end nel mio progetto.Parse - salvataggio degli oggetti correlati

Come si immagina ci siano parecchie relazioni nel modello di dati. Un sacco di volte creo un oggetto "genitore" e tutti i suoi "bambini" nello stesso momento e li salvo tutti in Parse.

Ora, quando è necessario salvare i bambini individualmente? Lo stesso vale per i file ecc ...

Primo esempio - Aggiunta di un avatar a un oggetto utente

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

OK, quindi sul dispositivo che posso fare riferimento la chiave @"avatar" sull'utente e ottenere l'avatar file. Ma come dovrebbe essere salvato su Parse?

Se lo faccio ...

[[PFUser currentUser] saveInBackground]; 

Sarà questo salvare il nuovo file che è stato aggiunto? O devo prima salvare il file e aspettare che questo abbia successo prima di aggiungerlo nell'oggetto utente e quindi salvare l'oggetto utente?

Secondo esempio

Creazione di un albero di oggetti ...

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"]; 

Come faccio a salvare questo collezione di oggetti?

Posso fare solo [family saveInBackground];?

Oppure devo prima eseguire un processo di salvataggio di ogni oggetto Person e controllare che funzioni prima di salvare l'oggetto family?

risposta

3

Finché il rapporto tra genitori e figli è Pointer , non è necessario salvare prima il bambino. PFRelation funziona in modo diverso, ma un salvataggio sull'oggetto padre salverà anche i bambini correlati come puntatori. Questo è vero per il codice Cloud, e sono abbastanza sicuro che sia valido anche per il dispositivo.

Alcuni dettagli in questa risposta: https://www.parse.com/questions/cloud-code-efficient-hierarchy-saving

0

Sì che farà ... in realtà non v'è una vasta gamma di metodi per il salvataggio dei contenuti

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: 

riferiamo Here per più

+0

Grazie, era più una questione di se la gerarchia viene salvata quando si salva il genitore però? La maggior parte delle volte sto usando 'saveInBackgroundWithBlock:' mi chiedevo solo di dover salvare i bambini individualmente: D – Fogmeister

Problemi correlati