我正在尝试为核心数据实体保存一些默认值或启动数据。我的应用扫描代码并将相应的数据存储到核心数据(实体是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 ]
我删除了已扫描的代码和数据,现在我的应用程序立即崩溃并吐出消息"致命错误:在解开可选值时意外发现nil" 我换了!为?
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
到
MyProject.ScannedVisitor
数据模型检查器中的。但是当我尝试这个时,XCode 7会删除句点并立即将其重写为
MyProjectScannedVisitor
[编辑3 ]
如何确保默认条目只添加一次而不是每次加载?
我想通过检查属性但我收到错误:
override func viewDidLoad() {
super.viewDidLoad()
...
let tmpCheckEntry: ABRecordRef = ABRecordCopyValue("Test", kABPersonLastNameProperty).takeRetainedValue() as? String
但这导致EXC_BAD_ACCESS ....... ??