首页 > 解决方案 > 使用 CoreData 和 SwiftUI 在 Scope 中找不到类型

问题描述

使用此代码编译并且似乎运行正常,因为我可以点击添加按钮并创建新项目)我在 Xcode 中显示错误。如何摆脱烦人的错误?

我尝试删除构建文件夹,重新启动 Xcode 无济于事。

import SwiftUI
import CoreData

struct ContentView: View {
    @Environment(\.managedObjectContext) private var viewContext
    @FetchRequest(
        sortDescriptors: [],
        animation: .default)
    private var items: FetchedResults<Medicine> // Cannot find type ‘Medicine’ in scope
    
    var body: some View {
        VStack {
            List {
                ForEach(items) { item in
                    Text("Start at \(item.start!, formatter: itemFormatter)")
                }
                .onDelete(perform: deleteItems)
            }
            HStack {
                EditButton()
                Spacer()
                Button(action: addItem, label: {
                    Text("Add")
                })
            }
        }
    }
    

标签: swiftui

解决方案


正如所指出的,这是一个预编译器问题,您会在编辑器中注意到它。

在确保.xcdatamodeld文件已保存并且其Codegen属性设置为 后Class Definition,您应该能够构建(Product -> Build 或 ⌘-B)。

另一个警告:查看任何可能的其他错误消息。就我而言,我无意中将一个属性添加到了一个没有类型(例如 String、Int16 等)的实体(我猜是鼠标滑落)。此错误阻止处理数据模型文件并产生“在范围内找不到”错误。修复数据模型也修复了下游错误。


推荐阅读