Ios 核心数据子类ManagedObject';s到多个关系addObject可以';行不通

Ios 核心数据子类ManagedObject';s到多个关系addObject可以';行不通,ios,swift,core-data,nsset,Ios,Swift,Core Data,Nsset,我有两个子类ManagedObject,如下所示 这是他们之间的一对多关系 为了给word添加定义,我实现了以下功能: func addDefinition(definition: MODefinition) { self.mutableSetValueForKey("definitions").addObject(definition) } 但当我运行该函数时,它崩溃并显示以下消息: 'NSInvalidArgumentException', reason: '*** -[NS

我有两个子类ManagedObject,如下所示

这是他们之间的一对多关系

为了给word添加定义,我实现了以下功能:

func addDefinition(definition: MODefinition) {

    self.mutableSetValueForKey("definitions").addObject(definition)

}
但当我运行该函数时,它崩溃并显示以下消息:

'NSInvalidArgumentException', reason: '*** -[NSSet initWithArray:range:copyItems:]: array argument is not an NSArray'
我还尝试将单词分配给定义,如:
definition.word=word

但它显示了相同的崩溃消息

但是,我可以将NSSet分配给word.Definitions,如下所示:

let definitionSet = NSSet(array: definitions)
    word.definitions = definitionSet
但此方法不允许我附加对象

另外,我的另一个managedObject可以使用这种函数
self.mutableSetValueForKey
来添加Object。所以我不知道哪里出了问题

编辑:

我正在尝试删除对象:

func removeDefinition(definition: MODefinition) {

    let muSet = self.mutableSetValueForKey("definitions")
    muSet.removeObject(definition)

}
它表明

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSSingleObjectSetI objectAtIndex:]: unrecognized selector sent to instance
我试图在其他对象上实现,但只有这个对象无法工作

我该怎么检查这个问题,我现在真的被卡住了

编辑2:

我添加新的关系以测试问题是否是由于该关系造成的

因此,我添加了测试关系

还有。。。。它起作用了


虽然我仍然不知道原因,但我现在可以正常运行了。

我也是ios新手。希望这对您有所帮助

在Moword课堂上使NSManaged。 比如:

@NSVAR管理字:NSSet

然后创建NSMutableSet对象

让wordMutableSet=NSMutableSet()

每次都要创建一个新的MoDefination对象

let entity =  NSEntityDescription.entityForName("MoDeination", inManagedObjectContext: Utilities.getAppManagedContext())

let obj = MoDefination(entity: entity!, insertIntoManagedObjectContext: Utilities.getAppManagedContext())
wordMutableSet.addObject(obj)

现在将其添加到Moword对象中 Moword entity1=NSEntityDescription.entityForName(“Moword”,在ManagedObjectContext:Utilities.getAppManagedContext()中)


感谢您的回复,但我的问题是修改定义(NSSet),它有一个方法让可变集修改
mutableSetValueForKey(“定义”)
。我的问题是,其他对象可以使用这种方式来完成,但只有这个类不能。我发现在我重新建立一段关系之后,我可以用这种方式来修改。所以,在我看来,可能是KVO关于“定义”的问题,因为我之前已经更改了MOWord.definitions关系,因此我想知道是否有我误用的东西。
let obj = Moword(entity: entity!, insertIntoManagedObjectContext: Utilities.getAppManagedContext())
obj?.scores = wordMutableSet