【发布时间】:2023-03-12 11:16:01
【问题描述】:
我在使用 Core Data 对象获取数据时遇到问题。
这是用于获取数据的代码
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 = Country()。这不仅声明了变量,它还使用默认初始化程序(init)创建了一个实例,而 NSManagedObjects(和子类)必须使用指定的初始化程序进行初始化:initWithEntity:insertIntoManagedObjectContext:。将其声明为var myObject : Country