我有两个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.definitons,如下所示:
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
我试图在其他对象上实现,但只有这个对象无法工作。
我应该检查这个问题,我现在真的被困住了。
EDIT2:
如果问题是由于这种关系,我会添加新的关系来测试。
所以,我添加了测试关系。
而且......它有效......
虽然,我仍然不知道原因,但我现在可以正常运行了。
答案 0 :(得分:0)
我也是ios.hope的新手,这对你有帮助。
在Moword课程中制作 NSManaged 。 喜欢:
@NSManaged var word: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”,inManagedObjectContext:Utilities.getAppManagedContext())
let obj = Moword(entity: entity!, insertIntoManagedObjectContext: Utilities.getAppManagedContext())
obj?.scores = wordMutableSet