1

やあ、

RKFetchedResultsTableControllerWS からデータをフェッチし、テーブルビューを駆動するために を使用しています。

RKTableViewCellMappingモデルとセルをマップするために使用しています。

cellMapping を設定する方法は次のとおりです。

RKTableViewCellMapping *cellMapping = [RKTableViewCellMapping cellMapping];
cellMapping.cellClassName = @"CrudCategoryCell";
cellMapping.reuseIdentifier = @"CrudCategory";
cellMapping.rowHeight = 100; 
[cellMapping mapKeyPath:@"name.name" toAttribute:@"nameLabel.text"];
[cellMapping mapKeyPath:@"desc.desc" toAttribute:@"descLabel.text"];

[self.tableController mapObjectsWithClass:[CrudCategory class]            
                      toTableCellsWithMapping:cellMapping];

ご覧のとおり、私のモデルは 1 つのクラスで表されますCrudCategory

このクラスには、次の 2 つの属性がnameありdescます。それぞれ と のタイプCrudCategoryNameですCrudCategoryDesc

これらのクラスは から継承しNSManagedObjectます。

アプリケーションの実行時:

Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'Cannot build a tableView cell for object <NSManagedObject: 0x6c4fb90> 
(entity: CrudCategory; id: 0x6c4d900 <x-coredata://FA7323F8-519D-4AA9-AC6E-  BD30446B4C9B/CrudCategory/p210> ; data: <fault>): 
No cell mapping defined for objects of type 'NSManagedObject''

次を使用して機能させることができました:

[self.tableController mapObjectsWithClass:[NSManagedObject class]
                      toTableCellsWithMapping:cellMapping];

それ以外の :

[self.tableController mapObjectsWithClass:[CrudCategory class]
                      toTableCellsWithMapping:cellMapping];

私が実際に得られないのは、例外が type のオブジェクトのマッピングがないと述べてNSManagedObjectいるNSManagedObjectことCrudCategoryですNSManagedObject

ここに私の環境があります:

  • iOS5
  • RestKit (github の最後の安定版)
  • アーク
  • 絵コンテ

誰かがアイデアを持っている場合:)

ありがとう !

編集 - 解決済み: 各エンティティに適切なクラスを指定することで、データモデルでこの問題を解決しました。

4

1 に答える 1

0

CrudCategoryクラスには、所有しているcoredataモデルに関連付けられたプロパティが必要です。また、このクラスを使用して、restkitマッピングプロバイダーのマッピングを定義する必要があります。

サブクラスCrudCategoryの属性を定義しないスーパークラスを使用してNSManagedObjectクラスyoureを使用する場合、問題が発生します。(おもう!)

問題は、なぜCrudCategoryの代わりにNSManagedObjectクラスを使用したいのかということです。CrudCategoryを使用することは、これを行う正しい方法です。これは、アプリで同様の方法を使用しているためです。これは、Restkitの例であるRKGithubが使用する方法です。

于 2012-05-25T11:57:34.617 に答える