Sto usando RestKit 0.20 per analizzare i dati JSON e salvarli nel database. C'è un'entità mappata SchoolClass, gestita da RestKit e salva bene. Ho un'altra entità chiamata MyClass, che memorizza le classi che ho selezionato. Questo è solo locale sul dispositivo.RestKit iOS non può salvare l'entità locale nel database
ecco il codice creano e salvano l'entità MyClass
NSManagedObjectContext *managedObjCtx = [RKManagedObjectStore defaultStore].mainQueueManagedObjectContext;
MyClass* course = [managedObjCtx insertNewObjectForEntityForName:@"MyClass"];
.. set the data for course here
NSError *executeError = nil;
if(![managedObjCtx save:&executeError]) {
NSLog(@"Failed to save to data store");
}
Ecco il codice che inizializza l'archivio dati gestita
// Initialize managed object store
NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];
objectManager.managedObjectStore = managedObjectStore;
/**
Complete Core Data stack initialization
*/
[managedObjectStore createPersistentStoreCoordinator];
NSString *storePath = [RKApplicationDataDirectory() stringByAppendingPathComponent:@"RKMainDb.sqlite"];
NSString *seedPath = [[NSBundle mainBundle] pathForResource:@"RKSeedDatabase" ofType:@"sqlite"];
NSError *error;
NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:seedPath withConfiguration:nil options:nil error:&error];
NSAssert(persistentStore, @"Failed to add persistent store with error: %@", error);
// Create the managed object contexts
[managedObjectStore createManagedObjectContexts];
// Configure a managed object cache to ensure we do not create duplicate objects
managedObjectStore.managedObjectCache = [[RKInMemoryManagedObjectCache alloc] initWithManagedObjectContext:managedObjectStore.persistentStoreManagedObjectContext];
Sembra il salvataggio è successo e nel MyClasseTableViewController I potrebbe leggere le voci MyClass salvate. Tuttavia dopo aver chiuso l'app e riavviare di nuovo. MyClassTableViewController è vuoto, perché i risultati recuperati sono vuoti. Ho aperto il file sqlite usando SQLiteBrowser e la tabella MyClass è vuota. Sembra che le entità MyClass vengano salvate solo nella cache ma non nell'archivio permanente. Devo chiamare alcune API fornite da RestKit per salvarlo? Ho provato a leggere il documento ma non sono riuscito a trovarlo. Per favore aiuto.
stai usando annidati contesti oggetto gestito? Se è così, è necessario salvare il contesto di root per ottenere le modifiche salvate nell'archivio dati. –
Ciao Tom, grazie per l'input. Ho aggiunto del codice alla domanda che mostra come viene creato il negozio. Uso la classe RKManagedObjectStore per farlo e ottengo sempre il managedObjectContext Probabilmente RestKit usa qualcosa di annidato, scaverò più a fondo segui il tuo esempio Grazie – Ray