我在使用Core Data對象獲取數據時遇到問題。Swift CoreData:無法調用NSManagedObject上的指定初始化程序
這是一個用於讀取數據
let fetchRequest = NSFetchRequest(entityName: "Country")
var countries = [Country!]()
do {
countries = try self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [Country!]
} catch {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
let nserror = error as NSError
NSLog("Unresolved error \(nserror), \(nserror.userInfo)")
abort()
}
代碼這是模型定義
import Foundation
import CoreData
@objc(Country)
class Country: NSManagedObject
{
.....
}
這是模型的擴展
import Foundation
import CoreData
extension Country {
@NSManaged var countryCode: String?
@NSManaged var dialCode: String?
@NSManaged var name: String?
}
我收到以下錯誤:
CoreData: error: Failed to call designated initializer on NSManagedObject class 'Country'
fatal error: unexpectedly found nil while unwrapping an Optional value
這是打破在這條線:
countries = try self.managedObjectContext!.executeFetchRequest(fetchRequest) as! [Country!]
我不知道,我明白這是問題。有人可以建議嗎?
謝謝!
這可能是因爲某個地方你有沿線'VAR myObject的=國家變量聲明的具體初始化() '。這不僅僅聲明變量,它還使用默認的初始化程序('init')創建一個實例,而NSManagedObjects(和子類)必須使用指定的初始化程序:'initWithEntity:insertIntoManagedObjectContext:'來初始化。聲明它,而不是'var myObject:Country' – pbasdf