所以,我有以下实体:核心数据:设置的NSSet斯威夫特
class Person: NSManagedObject {
@NSManaged var name: String
@NSManaged var dogs: NSSet
}
class Dog: NSManagedObject {
@NSManaged var name: String
@NSManaged var owner: NSManagedObject
}
而且我觉得我必须试着像五种不同的方法来设置狗的NSSet和业主NSManagedObject,都没有运气。
self.mutableSetValueForKey("dogs").addObject(newDog)
崩溃和投掷 “终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因: '*** - [NSSet中intersectsSet:]:设定参数不是一个NSSet中'”
我都试过这些选项中的一个:
var newDogs = [newDog]
var setOfDogs = NSSet(array: newDogs) as Set<NSObject>
self.dogs.setByAddingObjectsFromSet(setOfDogs)
self.dogs.setByAddingObjectsFromArray(newDogs)
这两者都没有引发异常,但self.dogs在使用这两者之后是空的。
另外,当设置dog.owner时,我该怎么做?我知道有一些方法是dog.owner.setValue(Value,Key),但我不确定这个值和key是指什么,并且文档没有超级有用。
我知道这里有一些类似的问题,但它们都在Obj-C中,我无法遵循它们。任何建议表示感谢,谢谢!
为什么不是“mutableCopy”?只是为了避免可能的编译错误 – Gabox
你不想要一个副本。您不应该试图欺骗编译器,而是让它帮助您编写稳定,高效且经济的代码。 – Mundi
这使我的应用程序崩溃:[_SwiftValue实体]:无法识别的选择器发送到实例 –