如何将核心数据关系设置为 NSNull()



我有一个简单的NSMO,它有一个关系字段。有时我需要删除关系但保留对象。这是对象,它与 Person 有一对一的关系(人员必须对多回到 LineUp):

@objc (LineUp)
class LineUp: NSManagedObject {
    @NSManaged var roleType: String
    @NSManaged var roleName: String
    @NSManaged var person: Person
}

然后当我尝试这样做时:

for role in arrayOfRoles as [LineUp] {
    if someCondition == true {
        role.person = NSNull()
        moc.save(&error)
    }
}

我只是得到"NSNull 不可转换为人"。我的解决方法是显而易见且昂贵的:我正在删除并重新创建对象。有什么提示吗?

更新后答案:我试图从错误的一侧将我的关系设置为零。IE 对于 personArray { 对于 person.roles { 如果某些条件 == 真 { 角色.人员 = 无 } } }

如果我只是获取角色的对象 ID,那么从那里开始它就可以工作了。但当我处于关系的"多"一方时,情况并非如此。没什么大不了的,对不起这么愚蠢的问题。

将其设置为 nil 是你指示关系另一端没有任何内容的方式。 当你想在 Objective-C 集合中表示 nil 时,会使用 NSNull,并且或多或少被可选功能淘汰。

最新更新