CoreData:错误:无法在创建

时间:2015-08-31 09:56:55

标签: ios swift core-data nsmanagedobject

我已查看其他问题并尝试了他们的解决方案,但错误仍然存​​在。

此外,这是我的第一个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文件(删节)      进口基金会      导入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解决方案,但我无法理解。提前致谢

2 个答案:

答案 0 :(得分:0)

这里的关键是

  

在解包可选值时意外发现nil

也许您的备份或backup.integer或任何其他指定值都是零。请调试以检查。

答案 1 :(得分:0)

解决方案原来是处理ManagedObjectContext。当我需要从ViewController传递时,我试图在我的DAO文件中生成它。

DAO

$("#maindiv").on("click",".remove",function(e){
     alert($(".country")[0].selectedIndex);  // This jquery returns only zero
     $this.parent('div').remove();
});

和viewcontroller

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

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