13

下面的代码是我的观点,我正在处理核心数据,但它一直给我错误,它无法在范围内找到实体,但应用程序运行良好,一切都被保存和获取得很好。

这是它给出的错误的屏幕截图

import SwiftUI

struct ContentView: View {
    @Environment(\.managedObjectContext) var moc
    @FetchRequest(
        entity: TestModelCoreData.entity(),
        sortDescriptors: [
            NSSortDescriptor(keyPath: \TestModelCoreData.name, ascending: false)
        ]
    ) var entities: FetchedResults<TestModelCoreData>
    
    var body: some View {
        VStack {
            Text("Hello, world!").padding()
            
            Button(action: {
                let newEntry = TestModelCoreData(context: self.moc)
                newEntry.name = "New name"
                
                if self.moc.hasChanges {
                    try? self.moc.save()
                }
            }) {
                Text("Add entry")
            }
            
            List(entities, id: \.self) { entity in
                Text(entity.name ?? "Unknown")
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
4

3 回答 3

14

我刚刚重新打开 Xcode 。

新项目的 SwiftUI 2.0 CoreData 问题 - '在范围内找不到类型'项目''

于 2020-11-19T16:12:19.313 回答
13

自 Xcode 12.2 起,此问题仍然存在。它不是 CoreData 独有的。它可以通过例如创建扩展名,然后将该扩展名移动到单独的文件来触发。如果您的代码在 Swift 编译器错误“Cannot find 'xyz' in scope”的情况下仍能构建和运行,请尝试在清除缓存、删除派生数据等之前关闭并重新打开项目。

于 2020-12-02T14:16:44.900 回答
2

如果提供的解决方案似乎都不起作用(重新启动 Xcode、重新创建项目、检查是否已添加到 Target Membership、删除派生数据等),并且尽管 IDE 警告尝试使用cmd+构建项目B。这解决了我的问题。

于 2021-07-18T13:42:46.470 回答