Използвам RestKit 0.20 за анализиране на JSON данни и запазване в база данни. Има картографиран обект SchoolClass, който се обработва от RestKit и записва добре. Имам друг обект, наречен MyClass, който съхранява класовете, които съм избрал. Този е само локален на устройството.
Ето кода, който създавам и запазвам обекта 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");
}
Ето кода, който инициализира хранилището за управлявани данни
// 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];
Изглежда, че запазването е успешно и в MyClasseTableViewController мога да прочета запазените записи в MyClass. Въпреки това, след като затворя приложението и рестартирам отново. MyClassTableViewController е празен, тъй като извлечените резултати са празни. Отворих файла sqlite с помощта на SQLiteBrowser и таблицата MyClass е празна. Изглежда, че MyClass обектите се записват само в кеша, но не и в постоянното хранилище. Трябва ли да извикам някакъв API, предоставен от RestKit, за да го запазя? Опитах се да прочета документа, но не можах да го намеря. Моля помогнете.