1 対多の CoreData モデルがあります。タスクリストとタスクリストに属するタスクがあります。私の問題は、新しいタスクを作成するたびに、タスクリストも作成されることです。
「新しいタスクリスト」は、データベースの名前フィールドのデフォルト値です。「新しいタスクリスト」は、新しいタスクリストを作成するときにビューによって保存される値です。ご覧のとおり、タスクが作成されるたびに、デフォルトの名前値を持つタスクリストが自動的に作成されます。
質問 これは本来あるべき姿ですか?もしそうなら、Z_ENT = 1 のタスクリスト名のみを選択するクエリを実行するにはどうすればよいですか (それらは親ですよね?) これが非常に間違っているように見える場合は、どうすれば正しく挿入できますか。テーブルの関係は正しいと思いますが、それが問題になる可能性がある場合は、スクリーンショットを投稿します。
モデル図
マイコード
リストが選択されている場合:
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
TaskViewController *taskViewController = [[TaskViewController alloc] init];
taskViewController.managedObjectContext = [self.fetchedResultsController managedObjectContext];
taskViewController.tasklist = managedObject;
TaskViewController では、次のように fetchedResultsController を取得します。
NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"(tasklistOfTask == %@)", tasklist];
[fetchRequest setPredicate: predicate];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
挿入するには、
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[newManagedObject setValue:@"dummy" forKey:@"task"];
[newManagedObject setValue:tasklist forKey:@"tasklistOfTask"];
managedobjectcontext は AppDelegate から渡されます。