2

ProductWeb サービスで呼び出された CoreData エンティティをマップしようとしています。

NSString *objName = @"Product";
RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL: baseUrl];
NSManagedObjectContext *context = [[MContextManager sharedContextManager] managedObjectContext];
NSManagedObjectModel *managedObjectModel = [[context persistentStoreCoordinator] managedObjectModel];
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];
[managedObjectStore createPersistentStoreCoordinator];
[managedObjectStore createManagedObjectContexts];
objectManager.managedObjectStore = managedObjectStore;

RKEntityMapping *objMap = [RKEntityMapping mappingForEntityForName:objName inManagedObjectStore:managedObjectStore];
[objMap addAttributeMappingsFromDictionary: @{
     @"CODE": @"code",
     @"LABEL": @"label",
 }];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:objMap pathPattern:nil keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:responseDescriptor];
[objectManager getObjectsAtPath:objName parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
    NSLog(@"ok");
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
    NSLog(@"ko");
}];
return;

MContextManagerご想像のとおり、私のコンテキスト マネージャーは、CoreData を使用したすべてのクエリに使用します。

この単純なエンティティをマップしようとして数時間かかりました。エラーは次のとおりです。

管理対象オブジェクト コンテキストを作成できません: 永続ストア コーディネーターに永続ストアがありません。これは、永続ストアを追加するのを忘れたか、そうしようとしてエラーで失敗したことを意味している可能性があります。

最初の行で永続ストアを設定していましたね。

アップデート

永続ストア用にこれを追加しました:

NSURL *appDocs = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSString *storeURL = [appDocs URLByAppendingPathComponent:@"my-model.sqlite"].absoluteString;
[managedObjectStore addSQLitePersistentStoreAtPath:storeURL fromSeedDatabaseAtPath:nil withConfiguration:nil options:nil error:nil];

それでも同じエラーで

4

2 に答える 2

1

永続ストア コーディネーターを作成していますが、永続ストアではありません。addSQLitePersistentStoreAtPath:fromSeedDatabaseAtPath:withConfiguration:options:error:データをディスクに保存したり、メモリに保持したりするには、実行する必要がありaddInMemoryPersistentStore:ます。

于 2013-05-22T15:08:21.963 に答える