1

間違いを見つけたので、更新までスクロールして、何が間違っていたのか、RestKit で他にどのような問題があるのか​​を確認してください :)

次の JSON に問題があります。

[ { "id": 1, "latTitle": "Aale", "latExamplesString": "", "previewImg": 1, "lastModified": null, "localeCategory": { "id": 1, "catID": 1, "langCode": "de", "localeTitle": "Aale", "localeExampleString": "Gefleckter Schlangenaal, Ringelschlangenaal" }, "elements": null } ]

ご覧のとおり、localeCategory は属性のネストされたリストであるため、マッピングのために次のことを行いました。

        //creating Mapping for localeCategory
    RKManagedObjectMapping *localeMapping = [RKManagedObjectMapping mappingForClass:[LocaleCategory class] inManagedObjectStore:objectStore];
    localeMapping.primaryKeyAttribute = @"lcatId";
    [localeMapping mapKeyPath:@"id" toAttribute:@"lcatId"];
    [localeMapping mapKeyPath:@"catId" toAttribute:@"catId"];
    [localeMapping mapKeyPath:@"langCode" toAttribute:@"langCode"];
    [localeMapping mapKeyPath:@"localeTitle" toAttribute:@"localeTitle"];
    [localeMapping mapKeyPath:@"localeExampleString" toAttribute:@"localeExampleString"];

    //creating Mapping for Category
    RKManagedObjectMapping *categoryMapping = [RKManagedObjectMapping mappingForClass:[Category class] inManagedObjectStore:objectStore];
    categoryMapping.primaryKeyAttribute = @"catId";
    [categoryMapping mapKeyPath:@"id" toAttribute:@"catId"];
    [categoryMapping mapKeyPath:@"latTitle" toAttribute:@"latTitle"];
    [categoryMapping mapKeyPath:@"latExamplesString" toAttribute:@"latExamplesString"];
    [categoryMapping mapKeyPath:@"previewImg" toAttribute:@"previewImg"];
    [categoryMapping mapKeyPath:@"lastModified" toAttribute:@"lastModified"];
    [categoryMapping mapKeyPath:@"elements" toAttribute:@"elements"];

    [categoryMapping mapKeyPath:@"localeCategory" toRelationship:@"localeCategory" withMapping:localeMapping];

    //[categoryMapping mapRelationship:@"localeCategory" withMapping:localeMapping];

    [self setObjectMapping:categoryMapping forResourcePathPattern:@"data/de/category"];

私の問題は次のとおりです。

JSON ファイルから TableView にデータを一覧表示する場合、localeCategory のすべての属性は null です。たとえば、セルのタイトルを設定したい場合:

Category *cat = [data objectAtIndex:absoluteRow];
    LocaleCategory *loccat = [cat localeCategory];
    NSLog(@"gotCategory, check localeCat: %@", loccat.localeTitle);
cell.catTitle.text = cat.localeCategory.localeTitle;

RestKit のすべての SampleCode と、スタック オーバーフローに関する関連トピックを確認しましたが、間違いが見つかりません。

あらゆる助けを前もってありがとう:)

乾杯、マックス

更新: FetchRequest を使用するときにも問題が発生します。

NSLog(@"fetchDataFromDataStore");
NSFetchRequest *request = [[[RKObjectManager sharedManager] mappingProvider] fetchRequestForResourcePath:self.resourcePath];
NSLog(@"request");
self.data = [Category objectsWithFetchRequest:request];

このエラーで終わります:

'executeFetchRequest:エラー: フェッチ リクエストにはエンティティが必要です。

私も疑問に思っているのは、これを使用できないことです:

Category *firstCategory = [Category objectWithPrimaryKeyValue:[NSNumber numberWithInt:1]];

セレクターの既知のクラスメソッドがないと言っています...

CoreData で Reskit を使用して設定する一般的なプロセスで間違いを犯したようです。

私はあなたの助けを楽しみにしています、どうもありがとう!

ありがとう、ルデルマー!すでに修正しましたが、それは問題ではなかったと思います。私は最初に CoreData なしで RestKit を使用したので、LocaleCategory クラスで @dynamic の代わりに @synthesize を使用しました :) 私が行った他のすべてのクラスは動的に切り替えたので、それはばかげた間違いでした! :)

とにかく、私はまだ FetchRequest に問題があります! 誰かがアイデアを持っているなら、私はとても感謝しています!

マックス

4

1 に答える 1

0

OK、今はRestKitで大丈夫です:)

これが私の問題の解決策です:

「executeFetchRequest: エラー: フェッチ要求にはエンティティが必要です。」

        [self setObjectMapping:categoryMapping forResourcePathPattern:@"category" withFetchRequestBlock:^NSFetchRequest *(NSString *resourcePath) {
        NSFetchRequest *fetchRequest = [Category fetchRequest];
        fetchRequest.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"latTitle" ascending:YES]];
        return fetchRequest;
    }];

そして呼び出し:

 NSFetchRequest *request = [[[RKObjectManager sharedManager] mappingProvider] fetchRequestForResourcePath:@"category"];
self.data = [Category objectsWithFetchRequest:request];

方法がわかれば簡単です:)

于 2012-12-12T13:25:22.573 に答える