Ios 核心数据子类ManagedObject';s到多个关系addObject可以';行不通
我有两个子类ManagedObject,如下所示 这是他们之间的一对多关系 为了给word添加定义,我实现了以下功能: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
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