我發現addPersistentStoreWithType
在RestKit的其他地方被調用,並且需要具有相同的選項才能禁用日記功能。就我而言,我是用RKManagedObjectImporter
創建一個種子DB如下:
NSError * error = nil;
NSString * seedFilePath = [[NSBundle mainBundle] pathForResource:@"seed" ofType:@"json"];
NSString * documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString * path = [documentsPath stringByAppendingPathComponent:@"MyDB.sqlite"];
RKManagedObjectImporter * importer = [[RKManagedObjectImporter alloc] initWithManagedObjectModel:_objectManager.managedObjectStore.managedObjectModel storePath:path];
[importer importObjectsFromItemAtPath:seedFilePath withMapping:mapping keyPath:keyPath error:&error];
BOOL success = [importer finishImporting:&error];
if (success) {
[importer logSeedingInfo];
} else {
RKLogError(@"Failed to finish import and save seed database due to error: %@", error);
}
我還在這裏看到了-shm和-wal文件甚至使以RKManagedObjectStore上述變更後。它顯然不關心用於創建類型RKManagedObjectStore
的_object_manager.managedObjectStore
的選項。
我發現,在RKManagedObjectImporter.m
,該createPersistentStoreCoordinator
方法增加了自己的持久性存儲一樣,所以我增加了選項字典是:
NSDictionary * options = @{ NSSQLitePragmasOption : @{ @"journal_mode" : @"DELETE" } };
NSPersistentStore *persistentStore = [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:options error:error];
if (! persistentStore) {
return nil;
}
結束了......嗯,那種至關重要的做因爲沒有它,種子數據庫將丟失數據。現在我的-shm和-wal文件不見了。謝謝,順便說一句,因爲上述答案幫助我追捕其他地點。
顯示核心數據堆棧設置的更多代碼以及此代碼如何與RestKit鏈接。 – Wain