SwiftData出现问题,无法在此托管对象上下文中插入“MyClass”,因为在关联的托管对象模型中找不到它

mmvthczy  于 2023-11-16  发布在  Swift
关注(0)|答案(1)|浏览(154)

我的应用程序在试图插入ModelContext时崩溃了。有什么明显的原因吗?

  1. @Model
  2. class MyDataClass {
  3. var number : String
  4. var pageNumberInDocument : Int
  5. init(number: String, pageNumberInDocument: Int) {
  6. self.number = number
  7. self.pageNumberInDocument = pageNumberInDocument
  8. }
  9. }
  10. @main
  11. struct MyApp: App {
  12. var body: some Scene {
  13. WindowGroup {
  14. ContentView()
  15. }.modelContainer(for:[MyDataClass.self])
  16. }
  17. }
  18. struct SaveMyData {
  19. @Environment(\.modelContext) var context
  20. func saveData(number: String, pageNumberInDocument : Int) {
  21. let dataToSave = MyDataClass(number: number, pageNumberInDocument: Int(pageNumberInDocument)!)
  22. context.insert(dataToSave)
  23. }
  24. }

字符串
对我来说一切都很基本和正确。我的崩溃....

  • 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法在此托管对象上下文中插入”MyDataClass“,因为在关联的托管对象模型中找不到它。”

我在苹果开发者论坛上看到了同样的问题,但没有对该帖子的重要回复。因此,我的帖子。真的很感谢任何人能够甚至只是向我陈述显而易见的事情。谢谢

yqlxgs2m

yqlxgs2m1#

你不能在View之外使用@Environment,所以你需要注入模型上下文。

  1. func saveData(number: String, pageNumberInDocument: Int, context: ModelContext) {
  2. let dataToSave = MyDataClass(number: number, pageNumberInDocument: Int(pageNumberInDocument)!)
  3. context.insert(dataToSave)
  4. }

字符串
由于该函数没有以任何方式访问self,因此如果需要,可以将其设置为静态。

相关问题