Bug
我今天第一次开始使用CoreData,但一直遇到这个bug。Thread 1: "An NSManagedObject of class 'MenuRPG.Inventory' must have a valid NSEntityDescription."
然而,我真的不知道我该如何解决这个问题。
我尝试过:
- 将实体模块更改为
Current Product Module
- 检查实体名和类名
- 删除我的实体并重新创建
但是每次我尝试在数据模式中添加新信息时,我的应用程序都会崩溃并显示该错误。
我的代码:
import SwiftUI
struct BagMenu: View {
@Environment(\.managedObjectContext) var moc
@FetchRequest(entity: Inventory.entity(), sortDescriptors: []) var items:
FetchedResults<Inventory>
var body: some View {
VStack {
List {
ForEach(items, id: \.id) { item in
Text(item.name ?? "Unnamed")
}
}
Button("Bake") {
let breadPrefix = ["Half-baked", "Decent", "Perfect"]
let breadTypes = ["rye", "sourdough", "bagel"]
let chosenPrefix = breadPrefix.randomElement()!
let chosenBread = breadTypes.randomElement()!
let item = Inventory(context: self.moc)
item.id = UUID()
item.name = "\(chosenPrefix) \(chosenBread)"
try? self.moc.save()
}
}
}
}
任何帮助将非常感谢!
2条答案
按热度按时间gblwokeq1#
你能检查一下下面的工作吗:
检查NSPersistentContainer名称
NSPersistentContainer
名称是什么(检查初始化器)?是否与xcdatamodeld
文件名匹配?查看应用代码
PersistenceController
之前初始化它是非常重要的。示例:
清空缓存:
样本项目:
文档
这可能有助于查看CoreData文档。是的,这可能是耗时的,但从长远来看可能会有所帮助。
ffx8fchx2#
如果您手动设置NSPersistentContainer并且缺少PersistenceController,这里是Paul哈德逊为Xcode 14提供的更新。2
更改“主”为您的“FileName”的文件。xcdatamodeldhttps://www.hackingwithswift.com/quick-start/swiftui/how-to-configure-core-data-to-work-with-swiftui
我花了两天时间才找到答案!