核心数据子类ManagedObject的to-many关系addObject无法工作

时间:2016-01-19 08:02:11

标签: ios swift core-data nsset

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

enter image description here

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

为了向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:

如果问题是由于这种关系,我会添加新的关系来测试。

enter image description here

所以,我添加了测试关系。

而且......它有效......

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

1 个答案:

答案 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