我正在为这个问题而烦恼,这似乎应该是一件非常简单的事情。iOS / Objective C 对我来说是新的,所以也许我只是没有掌握一些基本的东西。
问题是我在我的核心数据模型中添加了一个新实体,并建立了一对多的关系。该模型已经有两个具有一对一关系的实体。
Players 实体是新实体。
我有一个 UITableViewController,我在其中保存到 UITextFields 的属性。这适用于 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];
但同样,没有区别 - 它仍然认为它得到的是 Players 类型的对象,而不是 NSSet。
我觉得我只是没有掌握一些简单的东西,所以非常感谢任何帮助!