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!)