我使用Swift。我有一个CoreData,它有一个名为days的字符串属性。我想为此分配一个默认值。我在我的CoreData模型类中尝试了它,但是它给出了一个错误,说" NSManaged属性不能有初始值" 。
这就是我的尝试。
@NSManaged var daysAvailable:String = "M"
答案 0 :(得分:6)
实际上真的很容易。只需覆盖awakeFromInsert
子类的NSManagedObject
方法。
class Person: NSManagedObject {
@NSManaged var name: String
@NSManaged var age: NSNumber
override func awakeFromInsert() {
super.awakeFromInsert()
setPrimitiveValue(21, forKey: "age")
setPrimitiveValue("Bob", forKey: "name")
}
}
根据awakeFromInsert
documentation:
如果要在此实现中设置属性值 方法,您通常应该使用原始访问器方法(或者 setPrimitiveValue:forKey:或者更好 - 适当的自定义基元 存取)。这可确保将新值视为基线 值而不是记录为可撤消的更改 有问题的财产。
答案 1 :(得分:1)
覆盖唤醒表单插入以初始化核心数据对象
Override func awakeFromInsert()
{
super.awakeFromInsert()
self.daysAvailable = "M"
}
答案 2 :(得分:1)
如果它是静态值,您可以在xcode中的Core Data模型编辑器中进行设置。 无需使用n#39; awakeFromFetch n#39;那个