2

複数のエンティティを持つコア データ モデルがあり、各エンティティはビュー コントローラーに対応し、ユーザーは各エンティティに情報を挿入します。次に例を示します。

タイヤ (最初のエンティティ) - タイプ (最初の属性)、コスト (2 番目の属性)。ガラス (2 番目のエンティティ) - 色 (1 番目の属性)、サイズ (2 番目の属性)、コスト (3 番目の属性)。

エンティティごとに、ユーザーが各エンティティの情報を挿入するテキストフィールドを持つ MVC があるため、タイヤ ボタンを押すと、タイヤの種類、コストなどを他のエンティティに挿入します。

エンティティを 1 つだけプルすると、すべてがうまくいき、テキストフィールドに情報を挿入してから [保存] を押すと、テーブルビューにうまく表示されます! しかし、ご存知のように、テーブルビューと別のセクションに残りのエンティティを挿入したいと思います。

「cellForRowAtIndexPath」を「いじって」みましたが、「fetchedResultsController」メソッドでも「if´s」と「swich´s」を使用しましたが、成功しませんでした。ここで何が欠けていますか?!?!?!

ありがとう、そして私の英語でごめんなさい。

4

1 に答える 1

5

NSFetchedResultsController作業を適切に行い、その高度なメモリとパフォーマンス機能を利用するには、単一のエンティティが必要です。

したがって、データ モデルを変更して、他のエンティティの抽象的な親エンティティItemである1 つの新しいエンティティを作成します。(モデル エディターで親エンティティを割り当てることができます。) すべてのアイテムで共有される属性 (名前など) が親に属していることを確認してください。これらは、テーブル ビューに表示する属性である必要があります。

これで、サブエンティティごとに固有のNSStringorNSNumber属性を追加して、 .typeNSFetchedResultsController

Apple の [コア データ プログラミング ガイド][1] から:

エンティティの継承階層を定義する場合 (「エンティティの継承」を参照)、フェッチ リクエストのエンティティとしてスーパー エンティティを指定すると、リクエストはスーパー エンティティとサブ エンティティの一致するすべてのインスタンスを返します。一部のアプリケーションでは、スーパーエンティティを抽象として指定する場合があります (「抽象エンティティ」を参照)。抽象エンティティのすべての具象サブエンティティの一致するインスタンスをフェッチするには、フェッチ仕様のエンティティを抽象エンティティに設定します。「抽象エンティティ」で説明したドメインの場合、Graphic エンティティでフェッチ リクエストを指定すると、フェッチは一致する Circle、TextArea、Line のインスタンスを返します。

したがって、すべてを取得しItems、 で並べ替え、type各セルについてタイプを決定し、テキスト ラベルに適切なプロパティを入力します。

于 2012-11-06T05:45:49.323 に答える