Ios 如何设置一些默认值或启动核心数据实体值?

Ios 如何设置一些默认值或启动核心数据实体值?,ios,swift,nsmanagedobject,viewdidload,Ios,Swift,Nsmanagedobject,Viewdidload,我试图为核心数据实体保存一些默认数据或启动数据。我的应用程序扫描代码并将相应的数据存储到核心数据中(实体是ScannedVisitor),这部分工作正常。但我希望有一个默认条目 我有: override func viewDidLoad() { super.viewDidLoad() // scanner code self.cameraLayerWithBorder() // Default Entry let defaultItem = NSEnt

我试图为核心数据实体保存一些默认数据或启动数据。我的应用程序扫描代码并将相应的数据存储到核心数据中(实体是ScannedVisitor),这部分工作正常。但我希望有一个默认条目

我有:

override func viewDidLoad() {
    super.viewDidLoad()

    // scanner code
    self.cameraLayerWithBorder()

    // Default Entry
    let defaultItem = NSEntityDescription.insertNewObjectForEntityForName("ScannedVisitor", inManagedObjectContext: moContext) as! ScannedVisitor
    defaultItem.sLastName = "Test"
    defaultItem.sCompany = "Test"
    defaultItem.sPhone = "0123456789"
    defaultItem.sEmail = "info@test.com"
    defaultItem.sJobTitle = "Job name"
    defaultItem.sCity = "New York"

    // end test Default Entry
}
但这会使我的应用程序崩溃

还是应该以某种方式将代码添加到ScannedVisitor.swift

[编辑]

以下是我收到的错误消息的屏幕截图:

[编辑2]

我删除了已扫描的代码和数据,现在我的应用程序立即崩溃,并弹出消息“致命错误:在打开可选值时意外发现零” 我换了!为了什么

  let defaultItem = NSEntityDescription.insertNewObjectForEntityForName("ScannedVisitor", inManagedObjectContext: moContext) as? ScannedVisitor
        defaultItem!.sLastName = "Test"
        defaultItem!.sCompany = "Test"
        defaultItem!.sPhone = "0123456789"
        defaultItem!.sEmail = "info@test.nl"
        defaultItem!.sJobTitle = "Job name"
        defaultItem!.sCity = "New York"
浏览一下,我看到人们正在重命名实体类,就像这样

ScannedVisitor

在数据模型检查器中。但是,当我尝试这个XCode 7时,它会删除句点并立即将其重写为

MyProjectScannedVisitor
[编辑3]

如何确保默认条目只添加一次,而不是每次加载

我想通过检查属性,但我得到一个错误:

    override func viewDidLoad() {
        super.viewDidLoad()
...    
let tmpCheckEntry: ABRecordRef = ABRecordCopyValue("Test", kABPersonLastNameProperty).takeRetainedValue() as? String

但这会导致EXC_BAD_访问……?

崩溃描述是什么?@当我滚动(我确实已经扫描了一些数据)时,在打开可选值时,意外地发现UB为零,请尝试
而不是
。再检查一下:我用'as'代替了?ScannedVisitor`但它仍然会使我的应用程序崩溃(请参见编辑2)。我想应用程序没有看到默认条目。明白了!愚蠢的我,我没有为每个属性提供默认值。我忘了一个属性。我已经将其设置为“测试”,现在我似乎有了一个可行的应用程序
    override func viewDidLoad() {
        super.viewDidLoad()
...    
let tmpCheckEntry: ABRecordRef = ABRecordCopyValue("Test", kABPersonLastNameProperty).takeRetainedValue() as? String