Domanda

Ho un progetto di iPhone dove ho una serie di Managed Objects in un contesto oggetto gestito all'interno del thread dell'applicazione principale. Su un thread separato, importare nuovi oggetti da un server web in un secondo contesto Managed Object.

Se l'importazione va ok, senza errori, risparmio il contesto di importazione. Questo innesca contextDidSave da cui io chiamo mergeChangesFromContextDidSaveNotification. I due contesti si fondono ok. Fin qui, tutto bene.

La mia funzionalità desiderata è quello di avere tutti gli oggetti che si trovano nella MOC originale, ma non nel MOC importata da cancellare (l'idea è che l'utente è rinfrescante i dati, e così i vecchi dati devono essere cancellati), ma l'unione sembra combinare solo i 2 MOCS.

Potete raccomandare se c'è un modo di gestire l'unione delle 2 MOCS in modo che chi non è in uno vengono eliminati nell'altra?

È stato utile?

Soluzione

Quando si crea il nuovo moc si ha accesso a tutti i vecchi oggetti in modo da poter gestire la cancellazione del thread in background come parte della importazione.

Altri suggerimenti

Quello che descrivi non è in realtà solo l'importazione. La logica di decidere quali oggetti vengono "aggiornati" è l'applicazione specifica. È possibile gestire che sul filo di importazione per il recupero quegli oggetti e li aggiorna, piuttosto che la creazione di nuove istanze o si può fare il lavoro dopo elargire. Tra le due opzioni, preferirei il primo come è più in linea con il modo in cui Core Data di cose.

Quello che faccio in tale situazione, è un metodo "prepareForDelet" che segna una proprietà "delete" YES. Poi, quando ho importare i miei oggetti, se ne esiste già, ho marchio come eliminazione NO. Quando il mio filo è finita, posso cancellare ogni oggetti la cui eliminazione è YES

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top