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