如何为CoreData中的NSManaged属性赋予初始值?

时间:2015-03-24 10:03:35

标签: ios swift core-data

我使用Swift。我有一个CoreData,它有一个名为days的字符串属性。我想为此分配一个默认值。我在我的CoreData模型类中尝试了它,但是它给出了一个错误,说" NSManaged属性不能有初始值"

这就是我的尝试。

@NSManaged var daysAvailable:String = "M"

3 个答案:

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

查看以下链接了解详情:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreData/Articles/cdManagedObjects.html

答案 2 :(得分:1)

如果它是静态值,您可以在xcode中的Core Data模型编辑器中进行设置。 无需使用n#39; awakeFromFetch n#39;那个

相关问题