Я использую 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, чтобы сохранить его? Я попытался прочитать документ, но не смог найти его. Пожалуйста помоги.