CoreData: error: Failed to call designated initializer on NSManagedObject class failing on create
CoreData: error: Failed to call designated initializer on NSManagedObject class failing on create
我查看了其他问题并尝试了他们的解决方案,但错误仍然存在。
此外,这是我的第一个 iOS 项目,所以请像我五岁一样解释一下 >.<
好的,所以我有一个日记条目实体,看起来像这样:
import Foundation
import CoreData
class DiaryEntry: NSManagedObject {
@NSManaged var title: String
@NSManaged var text: String
@NSManaged var date: NSDate
@NSManaged var extra: String
@NSManaged var backup: NSNumber
}
还有,我有一个像这样的 DAO 文件(删节)
导入基金会
导入核心数据
class coreDataDao : NSManagedObject, DiaryDAO{
func createEntry(title:String,text:String,date:NSDate,backup:NSNumber,extra:String){
let newItem = NSEntityDescription.insertNewObjectForEntityForName("DiaryEntry", inManagedObjectContext: self.managedObjectContext!) as! DiaryEntry
newItem.title=title
newItem.text=text
newItem.date=date
newItem.extra=extra
newItem.backup=backup.integerValue
}
}
最后,调用我的 viewcontroller,我有这个功能:
let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
func jTest(){
var dao = coreDataDao()
dao.createEntry("a title",text:"some text", date: NSDate(), backup: 2, extra: "extras")
}
但是当代码运行时,出现以下错误:
MyApp[9786:438760] CoreData: error: Failed to call designated initializer on NSManagedObject class 'MyAppName.coreDataDao'
fatal error: unexpectedly found nil while unwrapping an Optional value
我整天都在尝试各种事情,包括大多数关于此错误的 SO 解决方案,但我无法继续。提前致谢
这里的关键是
unexpectedly found nil while unwrapping an Optional value
也许您的备份或 backup.integer 或任何其他分配的值是零。请调试检查。
解决方案原来是处理 ManagedObjectContext。当需要从 ViewController.
传递时,我试图在我的 DAO 文件中生成它
DAO
class func createEntry(title:String,context:NSManagedObjectContext)->DiaryEntry{
if let newItem = NSEntityDescription.insertNewObjectForEntityForName("DiaryEntry", inManagedObjectContext: context) as? DiaryEntry{
和viewcontroller
coreDataDao.createEntry("a title",context: self.managedObjectContext!)
我查看了其他问题并尝试了他们的解决方案,但错误仍然存在。
此外,这是我的第一个 iOS 项目,所以请像我五岁一样解释一下 >.<
好的,所以我有一个日记条目实体,看起来像这样:
import Foundation
import CoreData
class DiaryEntry: NSManagedObject {
@NSManaged var title: String
@NSManaged var text: String
@NSManaged var date: NSDate
@NSManaged var extra: String
@NSManaged var backup: NSNumber
}
还有,我有一个像这样的 DAO 文件(删节) 导入基金会 导入核心数据
class coreDataDao : NSManagedObject, DiaryDAO{
func createEntry(title:String,text:String,date:NSDate,backup:NSNumber,extra:String){
let newItem = NSEntityDescription.insertNewObjectForEntityForName("DiaryEntry", inManagedObjectContext: self.managedObjectContext!) as! DiaryEntry
newItem.title=title
newItem.text=text
newItem.date=date
newItem.extra=extra
newItem.backup=backup.integerValue
}
}
最后,调用我的 viewcontroller,我有这个功能:
let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
func jTest(){
var dao = coreDataDao()
dao.createEntry("a title",text:"some text", date: NSDate(), backup: 2, extra: "extras")
}
但是当代码运行时,出现以下错误:
MyApp[9786:438760] CoreData: error: Failed to call designated initializer on NSManagedObject class 'MyAppName.coreDataDao'
fatal error: unexpectedly found nil while unwrapping an Optional value
我整天都在尝试各种事情,包括大多数关于此错误的 SO 解决方案,但我无法继续。提前致谢
这里的关键是
unexpectedly found nil while unwrapping an Optional value
也许您的备份或 backup.integer 或任何其他分配的值是零。请调试检查。
解决方案原来是处理 ManagedObjectContext。当需要从 ViewController.
传递时,我试图在我的 DAO 文件中生成它DAO
class func createEntry(title:String,context:NSManagedObjectContext)->DiaryEntry{
if let newItem = NSEntityDescription.insertNewObjectForEntityForName("DiaryEntry", inManagedObjectContext: context) as? DiaryEntry{
和viewcontroller
coreDataDao.createEntry("a title",context: self.managedObjectContext!)