私はこの問題で髪を引き裂いていますが、それは本当に単純なものであるべきだと思われます. iOS/Objective C は初めてなので、基本的なことを理解していないだけかもしれません。
問題は、コア データ モデルに新しいエンティティを追加し、1 対多の関係を設定したことです。モデルには、1 対 1 の関係を持つ 2 つのエンティティが既にありました。
Players エンティティは新しいものです。
UITextFields の属性に保存する UITableViewController があります。これは、Teams/TeamDetails の元の構成では問題なく機能しましたが、Players エンティティをコードに追加すると、次のエラーでクラッシュします。
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Unacceptable type of value for to-many relationship:
property = "playerDetails"; desired type = NSSet; given type = Players;
したがって、私の Save メソッドには、次のものがありました。
Teams *team = [NSEntityDescription insertNewObjectForEntityForName:@"Teams" inManagedObjectContext:self.managedObjectContext];
TeamDetails *teamdetails = [NSEntityDescription insertNewObjectForEntityForName:@"TeamDetails" inManagedObjectContext:self.managedObjectContext];
team.teamDetails = teamdetails;
次に、次のような属性を設定します。
team.teamName = teamNameTextField.text;
team.teamDetails.managerName = managerNameTextField.text;
これはすべて問題なく機能しました。これを拡張して Players エンティティを組み込みます。
Players *playerDetails = [NSEntityDescription insertNewObjectForEntityForName:@"Players" inManagedObjectContext:self.managedObjectContext];
team.playerDetails = playerDetails;
そして、上記のエラーが発生します。私は次のことを試しました:
[team setPlayerDetails:playerDetails];
しかし、これは何の違いもありません。私も試しました:
NSSet *playerDetails = [NSEntityDescription insertNewObjectForEntityForName:@"Players" inManagedObjectContext:self.managedObjectContext];
しかし、やはり違いはありません。NSSet ではなく、Players 型のオブジェクトを取得していると考えています。
簡単なことを理解していないような気がするので、どんな助けでも大歓迎です!