5

私はこの問題で髪を引き裂いていますが、それは本当に単純なものであるべきだと思われます. 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 型のオブジェクトを取得していると考えています。

簡単なことを理解していないような気がするので、どんな助けでも大歓迎です!

4

1 に答える 1