2013-07-19 9 views

risposta

5

Controllare la documentazione.

Inoltre, sono stati molto reattivi quando ho fatto loro domande in passato. Potresti sempre provare a farlo anche tu.

Edit:

Non certo perché ho ottenuto il voto verso il basso. Forse la documentazione era troppo confusa. Provare a utilizzare

- (void) MR_saveToPersistentStoreWithCompletion:(MRSaveCompletionHandler)completion; 

non sto usando l'ultima versione di MagicalRecord, ma credo che questo dovrebbe essere corretto

//get the context for the current thread 
    //this context can be updated by anyone other process on this thread that uses the same MR_contextForCurrentThread call 
    //it's a local store that can be merged to a parent store 
    NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread]; 

    //create an NSManagedObject of type YourEntity and insert it into the localContext object 
    NSManagedObject *obj = [YourEntity MR_createInContext:localContext]; 

    //make any updates to obj 

    //save the localContext async 
    //this call should save all nested NSManagedObjectContexts as well (if they exist) 
    [localContext MR_saveToPersistentStoreWithCompletion:^{ 
     //when the async save is complete, this block gets executed 
     //blocks work very similarly to javascript callbacks 
     //basically it's a function reference or block of code that get's packaged up and can be passed around 
     //In this case, the completion block allows to to run any code after the save has been completed. 
    }]; 

Una cosa che non mi ero reso conto quando ho iniziato ero quando ho creato il mio soggetto , lo ha anche inserito nel contesto. Mi ha causato il salvataggio accidentale di oggetti che non avevo bisogno di persistere. Per evitare ciò, ho impostato un subcontext e lo salvo solo quando voglio mantenere gli oggetti.

self.context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; 
self.context.parentContext = [NSManagedObjectContext MR_defaultContext]; 
+0

sì, non sono sicuro del motivo per cui si è ottenuto il downvote, non sono stato io (solo con l'upvoted per negarlo). Ti dispiacerebbe fornire un'altra riga di codice che implementa il metodo che hai citato? Sto ancora guadagnando tutta la sintassi per Objective-C e non capisco veramente withCompletion:^(completamento BOOL Success, NSError * error) che si completa automaticamente quando si digita questo metodo ... – Apollo

+3

FYI - Non era me down ho votato, ma questa risposta _did_ appare nella coda delle bandiere per 10k utenti, probabilmente perché le risposte di solo collegamento non sono considerate una buona cosa su StackOverflow. Includere sempre abbastanza informazioni in modo che se il collegamento si interrompe, la risposta è ancora utile. Vedi [here] (http://meta.stackexchange.com/q/8231/164376) per maggiori informazioni. – joran

+1

MR_contextForCurrentThread è deprecato – Gargo

Problemi correlati