0

Core Data をアプリケーションに実装しようとしてきましたが、最近では対多関係を設定しようとしています。以下の関係を設定します

NSMutableSet *todoObjects = [[NSMutableSet alloc] init];
for (int i = 0; i < [allTodolistsData count]; i++) {
    NSDictionary *dictionary = [allTodolistsData objectAtIndex:i];
    TodolistObject *tempTodolist = [[TodolistObject alloc] initWithDict:dictionary];
    [todoObjects addObject:[Todolists newTodolist:tempTodolist withContext:appDelegate.context]];
    [tempTodolist release];
}

[project setTodolists:todoObjects];

プロジェクト変数は でNSManagedObjectsetTodolists:メソッドはプロジェクトの To Do リストを設定するために自動生成されます。このプロジェクトは一連の to-do リストと対多の関係にあるため、NSMutableSet を渡します。ただし、これを行うと、次のエラーが発生します。

-[__NSArrayM isEqualToSet:]: 認識されないセレクターがインスタンス 0xa325d60 に送信されました

この問題を抱えている人を見つけることができないようです。何か案は?

4

1 に答える 1

1

したがって、NSManagedObject からリレーションシップの変更可能なセットを取得し、それに新しいオブジェクトを追加する必要があります。

NSMutableSet *todoObjects = (NSMutableSet*)[project mutableSetValueForKey:@"todoLists"];

// Switch your for loop to use fast-enumaration
for (NSDictionary *dictionary in allTodolistsData) {
    TodolistObject *tempTodolist = [[TodolistObject alloc] initWithDict:dictionary];
    [todoObjects addObject:[Todolists newTodolist:tempTodolist withContext:appDelegate.context]];
    [tempTodolist release];
}

// Save project in the same context where you created the object
于 2012-10-23T05:06:53.213 に答える