0

http json リソース (カテゴリ リスト) からコンテンツを取得し、restkit および coredata に接続しようとしています。

私のマッピングは、CoreData を使用しなかったときに機能していました。次に、次のチュートリアルを使用することにしました。

http://www.alexedge.co.uk/portfolio/introduction-restkit-0-20/

ただし、奇妙なエラーが発生し、その理由がわかりません。

the entity (null) is not key value coding-compliant for the key "remoteId"

私のカテゴリ モデル/エンティティには、サーバー上の id にマップされた remoteId があるため、これは問題ではありません。ただし、エラーから、RestkitまたはCoreDataは私が話しているエンティティを理解できないようです(彼らはそれがnullエンティティだと言っています??)

これはリクエストコードです:

- (NSFetchedResultsController *)fetchedResultsController{
        if (!_fetchedResultsController) {
            NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([Category class])];
            fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]];
            self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext sectionNameKeyPath:nil cacheName:@"Category"];
            self.fetchedResultsController.delegate = self;
            NSError *error;
            [self.fetchedResultsController performFetch:&error];
            NSLog(@"%@",[self.fetchedResultsController fetchedObjects]);
            NSAssert(!error, @"Error performing fetch request: %@", error);
        }

        return _fetchedResultsController;
    }

そしてマッピング:

    +(void) prepareMapping {
        RKObjectManager *manager = [RKObjectManager sharedManager];

        NSDictionary *categoryAttributes = @{
                                              @"id" : @"remoteId",
                                              @"created_at" : @"updatedAt",
                                              @"created_at" : @"createdAt",
                                              @"name" : @"name",
                                              @"ads_count": @"adsCount",
                                            };

        RKEntityMapping *categoryMapping = [RKEntityMapping mappingForEntityForName:@"Category" inManagedObjectStore:manager.managedObjectStore];

        [categoryMapping addAttributeMappingsFromDictionary:categoryAttributes];

        categoryMapping.identificationAttributes = @[@"remoteId"];

        [manager addResponseDescriptorsFromArray:@[
         [RKResponseDescriptor responseDescriptorWithMapping:categoryMapping
                                                 pathPattern:@"neighborhoods/:neighborhoodId/categories.json"
                                                     keyPath:@"index_categories.index_category"
                                                 statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]
         ]];
    }
4

3 に答える 3

1

うまくいくかどうかはわかりませんNSStringFromClass([Category class])。次のコードを試しましたか?

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Category"];

さらに、RestKit v.020-rc1 zip ファイル内のサンプル コア データ プロジェクトをチェックアウトして、状況を確認することもできます。

于 2013-02-21T21:38:45.337 に答える
0

http://nsscreencast.com/episodes/52-restkit-coredata

統合の詳細

于 2013-06-05T00:48:30.527 に答える