JSON verilerini ayrıştırmak ve veritabanına kaydetmek için RestKit 0.20 kullanıyorum. THere, RestKit tarafından ele alınan ve tasarruf sağlayan eşlenmiş bir SchoolClass öğesidir. Seçtiğim sınıfları kaydeden MyClass adında başka bir varlık var. Bu sadece cihazda yereldir. İşte iOS RestKit yerel varlıkları veritabanına kaydedemiyor
yönetilen veri dükkanını// 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];
O kurtardı başarılı görünür
ve MyClasseTableViewController I'de başlatmak kod ben Sınıfım varlık İşte
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");
}
oluşturmak ve kaydetmek kod olduğunu Kayıtlı MyClass girişlerini okuyabilir. Ancak uygulamayı kapatıp tekrar başlattıktan sonra. Getirilen sonuçlar boş olduğundan MyClassTableViewController boş. SQLiteBrowser kullanarak sqlite dosyasını açtım ve MyClass tablosu boş. MyClass varlıkları sadece önbellekte saklanır ama kalıcı mağazada değil gibi görünüyor. Kaydetmek için RestKit tarafından sağlanan bazı API'ları çağırmalı mıyım? Dokümanı okumayı denedim ama bulamadım. Lütfen yardım et.
- (BOOL)saveToPersistentStore:(NSError **)error
Evet bu iç içe yönetilen nesne bağlamı işlemek için mantığı var mı: Tom tarafından kurşun
Are you Eğer öyleyse, kaydetmek gerekir? Yuvalanmış yönetilen nesne bağlamları kullanarak veri deposuna kaydedilen değişiklikleri almak için kök içeriği –
hi Tom, giriş için teşekkürler.Kolayın nasıl oluşturulduğunu gösteren soruya bir kod ekledim.RKManagedObjectStore sınıfını bunu yapmak için kullanıyorum ve her zaman manageObjectContext'i aldım. Belki de RestKit iç içe bir şey kullanıyordur.İnce derine inerim.Teşekkürler – Ray