gpt4 book ai didi

swift - 必须有一个有效的 NSEntityDescription (SwiftUI)

转载 作者:行者123 更新时间:2023-12-02 02:25:27 25 4
gpt4 key购买 nike

错误

我今天第一次开始使用 CoreData,但一直遇到这个错误。

线程 1:“'MenuRPG.Inventory' 类的 NSManagedObject 必须具有有效的 NSEntityDescription。”

但是,我不太确定如何解决这个问题。

我尝试过的:

  • 将实体模块更改为当前产品模块
  • 检查实体名称和类名称
  • 删除我的实体并重新创建它

但每次我尝试将新信息添加到我的数据模式时,我的应用程序都会崩溃并显示该错误。

我的代码:

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()
}
}
}
}

enter image description here

如有任何帮助,我们将不胜感激!

最佳答案

你能检查以下是否有效:

检查 NSPersistentContainer 名称

  • 您使用的 NSPersistentContainer 名称是什么(检查初始化程序)?它是否与 xcdatamodeld 文件名匹配?

查看应用代码

  • 在使用之前初始化 PersistenceController 非常重要。
  • 以便加载实体。如果您使用的是 SwiftUI 应用程序生命周期,请检查以下内容:

例子:

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)
}
}
}

清除缓存:

  • Xcode 缓存实体类,有时这可能会导致问题。
  • 尝试 Xcode > Product > Clean Build Folder (Command Shift K)。 (或删除 DerivedData 文件夹的内容)。
  • 删除模拟器/设备上的应用
  • 退出 Xcode 并重新打开并运行。

示例项目:

  • 如果您不熟悉 CoreData,使用示例 CoreData 项目可能会有所帮助。
  • Xcode > 新建项目 > 选中 CoreData 复选框

文档

阅读 CoreData 文档可能会有所帮助。是的,这可能很耗时,但从长远来看可能会有所帮助。

关于swift - 必须有一个有效的 NSEntityDescription (SwiftUI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65730887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com