簡體   English   中英

CoreData:錯誤:無法在創建時失敗的NSManagedObject類上調用指定的初始化程序

[英]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文件(摘要)import Foundation import CoreData

 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解決方案,但我無法解決。 提前致謝

這里的關鍵是

展開Optional值時意外發現nil

也許您的backup或backup.integer或任何其他分配的值為nil。 請調試進行檢查。

原來該解決方案正在處理ManagedObjectContext。 當需要從ViewController傳遞它時,我會在我的DAO文件中生成它。

 class func createEntry(title:String,context:NSManagedObjectContext)->DiaryEntry{

    if let newItem = NSEntityDescription.insertNewObjectForEntityForName("DiaryEntry", inManagedObjectContext: context) as? DiaryEntry{

和視圖控制器

coreDataDao.createEntry("a title",context: self.managedObjectContext!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM