mar*_*ark 3 core-data swift swiftui
我今天第一次开始使用 CoreData,但一直遇到这个错误。
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()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
您可以检查一下以下操作是否有效:
NSPersistentContainer您使用的名称是什么(检查初始值设定项)?与文件名匹配吗xcdatamodeld?PersistenceController使用前进行初始化非常重要。例子:
import SwiftUI
@main
struct TestCoreDataApp: App {
//This is very important to initialise `PersistenceController` before using it. So that the entities are loaded.
let persistenceController = PersistenceController.shared
var body: some Scene {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
}
}
}
Run Code Online (Sandbox Code Playgroud)
阅读 CoreData 文档可能会有所帮助。是的,这可能很耗时,但从长远来看可能会有所帮助。