2012-03-04 13 views
6

Estoy planeando enviar una aplicación CoreData, pero no estoy seguro de si introducir la funcionalidad iCloud. Esta pregunta viene después de que he estado probando beta mi aplicación en iPhone, llenándola con datos relevantes. Luego agregué la funcionalidad de iCloud y comencé a probar en el iPad. Descubrí que sólo nueva entrada fuera de sincronización entre dispositivos, esto son las tentativas que hice:Introducir iCloud en aplicaciones CoreData después de ser enviado, cómo migrar los datos antiguos

  • Trabajando en el iPhone, llenar los datos, activar iCloud, empezar a trabajar en vacío iPad

Pero tiene algo de extraño problemas, como entidades secundarias unidas al padre incorrecto. Entonces probé esto.

  • documentos de solicitud de exportación e importación de iPhone en el iPad

En este caso los datos son los mismos en ambos dispositivos, pero todavía no era capaz de sincronizar los datos antiguos, mientras que uno nuevo llegar a la perfección de sincronización la mayor parte del tiempo después de segundos.

Entiendo que la sincronización de CoreData ocurre con el intercambio de registro de transacciones, por lo que podría ser obvio que los datos antiguos no se sincronizan. Pero en este punto estoy preguntando si alguien ya se ha enfrentado a este problema que me parece bastante común, o si me falta algo, algún tipo de configuración o líneas de código para hacer que esto funcione como se esperaba.

+0

Me encantaría tener una respuesta para esta. Sembrar un archivo db ya existente en iCloud es algo que no se ha explicado. Puedo pensar en hacks pero nada limpio y simple. –

Respuesta

5

No creo que se haya perdido nada. El problema básico es que tener una base de datos pre-abastecida no es compatible con iCloud. Es algo que también me ha preocupado. partir del documento

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.

no he intentado usar el migratePersistentStore: ... sin embargo, el método para mi trabajo pero el hecho clave parece ser que la transmisión de los datos básicos a través de iCloud a través los registros de transacciones se basan en cada transacción desde el nacimiento de la base de datos rastreada por el mecanismo.

Supongo que al usar migratePersistentStore: ... provocará que una gran cantidad de transacciones se propaguen al sistema.

Cuestiones relacionadas