間違いを見つけたので、更新までスクロールして、何が間違っていたのか、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 に問題があります! 誰かがアイデアを持っているなら、私はとても感謝しています!
マックス