我已查看其他问题并尝试了他们的解决方案,但错误仍然存在。
此外,这是我的第一个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解决方案,但我无法理解。提前致谢
答案 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{