iOS核心数据错误 – 对于多对多关系,不可接受的值types

我正在把这个问题扯出来,这似乎应该是一件非常简单的事情。 iOS / Objective C对我来说是新的,所以也许我只是没有抓住一些根本的东西。

问题是我已经添加了一个新的实体到我的核心数据模型,并build立了一个一对多的关系。 该模型已经有两个具有一对一关系的实体。

核心数据模型

玩家实体是新的。

我有一个UITableViewController我保存到UITextFields的属性。 这对Team / TeamDetails的原始configuration工作正常,但是当我将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 *playerDetails = [NSEntityDescription insertNewObjectForEntityForName:@"Players" inManagedObjectContext:self.managedObjectContext]; team.playerDetails = playerDetails; 

我得到上面的错误。 我已经尝试了以下内容:

 [team setPlayerDetails:playerDetails]; 

但这并没有什么区别。 我也试过:

 NSSet *playerDetails = [NSEntityDescription insertNewObjectForEntityForName:@"Players" inManagedObjectContext:self.managedObjectContext]; 

但是,再次,没有什么区别 – 它仍然认为这是一个types的球员,而不是NSSet的对象。

我觉得我只是没有抓住简单的东西,所以任何帮助将非常感激!

playerDetails是一个多对多的关系,所以team.playerDetails的值是一玩家,而不是一个玩家对象。 你可以使用

 [team addPlayerDetailsObject:playerDetails]; 

或者更简单地使用相反的关系:

 playerDetails.team = team;