0

エンティティヘッダーがあり、モデルで変換可能と宣言された属性 NSDictionary があります。今、fetchedRequestController でヘッダーの配列をソートしたくありません。nil または null オブジェクトを渡すとエラーが発生します。その緊急を助けてください。

前回から再構成してみましょう: 変換可能な属性ヘッダーを持つエンティティがある場合。生成されたクラスで id タイプを NSDictionary に変更します。entity.attribute name.keyとして辞書のキーにアクセスする必要があります...このクラスはキーのキー値コーディングの苦情ではないため、エラーが発生します:(key)...この問題の回避策は何ですか。

// Create and configure a fetch request with the Book entity. NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"headers" inManagedObjectContext:self.tableCellGenericMoc]; [fetchRequest setEntity:entity]; // Create the sort descriptors array. NSSortDescriptor *headersDescriptor = [[NSSortDescriptor alloc] initWithKey:@"headersDictionary" ascending:NO]; NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:headersDescriptor, nil]; [fetchRequest setSortDescriptors:sortDescriptors]; // Create and initialize the fetch results controller. NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.tableCellGenericMoc sectionNameKeyPath:@"headresDictionary" cacheName:@"Root"]; self.fetchedResultsController = aFetchedResultsController; fetchedResultsController.delegate = self;

上記のセレクターは、headersDictionary をソートできないため、エラーが発生します...

4

1 に答える 1

1

Core Data に NSDictionary を保存するのはなぜですか? それは簡単に言えば、やり方が間違っているということです。辞書のようなものが必要な場合は、名前と値を持つ一対多の関係の反対側に子オブジェクトを作成するだけです。

モデルを正しく設計すれば、現在発生している問題は発生せず、述語を使用してフィルタリングし、NSFetchRequest で直接ソート記述子を使用できます。

アップデート

ああ、ありがとう...問題は、私がウェブから取得している辞書に固定のキー構造がないことです..そのため、変換可能な属性としてそのまま辞書を取得する必要があります

それでも意味がありません。私が説明した設計は、コア データ レベルで役立つことを除けば、変換可能なオブジェクト内にディクショナリを配置するのと同じです。私が説明した設計では、キーを固定する必要はありません。

設計を再考すると、この質問は無関係になります。

于 2010-07-28T01:22:06.097 に答える