NSManagedObject 无法初始化
NSManagedObject failing to Initialize
我正在使用 'CoreData',我为名为 'Project' 的实体创建了一个 'NSManagedObject' 类型 class,但是当我打开 'ViewController' 时我将 class 初始化为 属性,我收到此错误
2015-12-09 14:15:54.961 MyProject[790:17582] CoreData: error: Failed to call designated initializer on NSManagedObject class 'MyProject.Project'
在我的项目 NSManagedObject class 中,我有一个方法可以将子 NSManagedObject 添加到 NSOrderdSet 中:
class Project: NSManagedObject {
func requestAddNewWeek (value : Content) {
guard let mutableCopyOfSet = projectContent?.mutableCopy() as? NSMutableOrderedSet else {
return
}
mutableCopyOfSet.addObject(value)
projectContent = mutableCopyOfSet.copy() as? NSOrderedSet
}
}
但是因为 'Project' 没有正确初始化,所以每次我在我的 viewcontroller 中调用方法时,都会解包 nil 并发生错误。
@IBAction func saveButtonPressed(sender: AnyObject) {
//
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext as NSManagedObjectContext
let entity = NSEntityDescription.entityForName("WeekContent", inManagedObjectContext:managedContext)
let newWeek = Content(entity: entity!, insertIntoManagedObjectContext: managedContext)
//Here I call project, but it unwraps a nil
project.requestAddNewWeek(newWeek)
do {
try managedContext.save()
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
print(entity)
}
这是我在 ViewController 中定义 'Project' 的方式:
var project : Project = Project()
我该如何解决这个问题。
您不能在 NSManagedObject
上使用默认初始化程序 ()
,因为该对象强烈依赖于 Core Data 的托管对象上下文。
必须使用的指定初始化程序是
init(entity entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?)
我正在使用 'CoreData',我为名为 'Project' 的实体创建了一个 'NSManagedObject' 类型 class,但是当我打开 'ViewController' 时我将 class 初始化为 属性,我收到此错误
2015-12-09 14:15:54.961 MyProject[790:17582] CoreData: error: Failed to call designated initializer on NSManagedObject class 'MyProject.Project'
在我的项目 NSManagedObject class 中,我有一个方法可以将子 NSManagedObject 添加到 NSOrderdSet 中:
class Project: NSManagedObject {
func requestAddNewWeek (value : Content) {
guard let mutableCopyOfSet = projectContent?.mutableCopy() as? NSMutableOrderedSet else {
return
}
mutableCopyOfSet.addObject(value)
projectContent = mutableCopyOfSet.copy() as? NSOrderedSet
}
}
但是因为 'Project' 没有正确初始化,所以每次我在我的 viewcontroller 中调用方法时,都会解包 nil 并发生错误。
@IBAction func saveButtonPressed(sender: AnyObject) {
//
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext as NSManagedObjectContext
let entity = NSEntityDescription.entityForName("WeekContent", inManagedObjectContext:managedContext)
let newWeek = Content(entity: entity!, insertIntoManagedObjectContext: managedContext)
//Here I call project, but it unwraps a nil
project.requestAddNewWeek(newWeek)
do {
try managedContext.save()
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
print(entity)
}
这是我在 ViewController 中定义 'Project' 的方式:
var project : Project = Project()
我该如何解决这个问题。
您不能在 NSManagedObject
上使用默认初始化程序 ()
,因为该对象强烈依赖于 Core Data 的托管对象上下文。
必须使用的指定初始化程序是
init(entity entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?)