2012-03-04 8 views
6

Sto pianificando di spedire un'applicazione CoreData, ma non sono sicuro se introdurre la funzionalità iCloud. Questa domanda viene dopo che ho eseguito il beta test della mia app su iPhone, riempiendola di dati rilevanti. Ho quindi aggiunto la funzionalità iCloud e avvio i test su iPad. Ho scoperto che solo nuova voce fosse sincronizzazione tra i dispositivi, questo sono i tentativi che ho fatto:Introdurre iCloud nelle applicazioni CoreData dopo la spedizione, come migrare i vecchi dati

  • Lavorando su iPhone, compilare i dati, attivare iCloud, iniziare a lavorare sul vuoto iPad

ma ho avuto un po 'strano problemi, come le entità figlio collegate a un genitore sbagliato. Poi ho provato questo.

  • documenti della domanda di esportazione e l'importazione da iPhone a iPad

In questo caso i dati sono gli stessi su entrambi i dispositivi, ma ancora non è stato in grado di sincronizzare i dati vecchi, mentre il nuovo uno prendi perfettamente sincronizzati il più delle volte dopo secondi.

Capisco che la sincronizzazione di CoreData avvenga con lo scambio di log delle transazioni, quindi potrebbe essere ovvio che i vecchi dati non vengano sincronizzati. Ma a questo punto sto chiedendo se qualcuno ha già affrontato questo problema che mi sembra abbastanza comune, o se mi manca qualcosa, qualche tipo di impostazioni o righe di codice per farlo funzionare come previsto.

+0

Amore per avere una risposta per questo. Seminare un db già esistente su iCloud è qualcosa che non è stato spiegato. Posso pensare a hack ma niente di pulito e semplice. –

risposta

5

Non penso che ti sia sfuggito qualcosa. Il problema di base è che avere un database pre-fornito non è supportato da iCloud. È qualcosa che mi ha preoccupato troppo. Dal Doc

https://developer.apple.com/library/ios/#releasenotes/DataManagement/RN-iCloudCoreData/_index.html

You should not seed initial content with a prepackaged database file. Instead, you should create the default items in code, or use NSPersistentStoreCoordinator's migratePersistentStore:toURL:options:withType:error: method to migrate a prepackaged database to the required location.

Non ho provato utilizzando il migratePersistentStore: ... metodo ancora per il mio lavoro, ma il fatto chiave sembra essere che la trasmissione di core-dati attraverso iCloud tramite i registri delle transazioni si basano sulla transazione ogni dalla nascita del database monitorato dal meccanismo.

Suppongo che l'utilizzo di migratePersistentStore: ... causerà un grande blob di seeding delle transazioni per colpire il sistema.

Problemi correlati