【发布时间】:2020-01-31 18:18:50
【问题描述】:
我正在尝试像以前一样从 Core Data 加载文件。 我的CoreData栈如下:
import Foundation
import CoreData
class SaveData:NSObject {
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentContainer(name: "DataModel")
container.loadPersistentStores(completionHandler: {
storeDescription, error in
if let error = error {
fatalError("Could load data store: \(error)") } })
return container }()
lazy var managedObjectContext: NSManagedObjectContext = persistentContainer.viewContext
}
当保存功能被触发时,我没有保存数据的麻烦。但是在获取数据时遇到了麻烦。 我的 fetch 方法是这样的:
var saveData = SaveData()
var locations = [Location]()
override func viewDidLoad() {
super.viewDidLoad()
let fetchRequest = NSFetchRequest<Location>() // 2
let entity = Location.entity()
fetchRequest.entity = entity // 3
let sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
do {
locations = try saveData.managedObjectContext.fetch(fetchRequest)
} catch {
fatalCoreDataError(error)
}
}
从 CoreData 获取数据时,应用程序崩溃。调试区 说: 2019-10-02 20:44:29.780267+0800 MyLocation[20870:2214196] [错误] 错误:任何模型中都没有 NSEntityDescriptions 声明 NSManagedObject 子类 'Location' 所以 +entity 很困惑。你 加载你的 NSManagedObjectModel 了吗?核心数据:错误:否 任何模型中的 NSEntityDescriptions 声明 NSManagedObject 子类 '位置' 所以 +entity 很困惑。你有没有加载你的 NSManagedObjectModel 了吗? 2019-10-02 20:44:29.780387+0800 MyLocation[20870:2214196] [error] 错误:+[Location entity] 无法 为托管对象找到 NSEntityDescription 的唯一匹配项 子类CoreData:错误:+ [位置实体]未能找到唯一 将 NSEntityDescription 匹配到托管对象子类 2019-10-02 20:44:29.789644+0800 我的位置[20870:2214196] *** 由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'executeFetchRequest:错误:A 获取请求必须有一个实体。'
我已经尝试了我能找到的解决方案,目前没有任何效果。 如何解决这个问题?提前致谢。
【问题讨论】:
-
在我看来,您的问题出在 SaveData() 中。该错误消息似乎表明 managedObjectContext 存在问题。