如何解决SwiftUI 2.0 CoreData与新项目有关的问题-'在范围中找不到'Item'类型'
[EDIT]我希望Apple可以解决明显的错误。解决方案是清除缓存,关闭并重新打开Xcode。
我正在使用Xcode Beta并启动一个新项目,而没有编写任何代码行,我已经遇到了错误。我在网上找不到任何东西。也许这太新了?
在新版本的Xcode中,我选择了新项目,
然后在核心数据中打勾
如果不勾选该框,我将使用“ hello world”获得通常的Xcode SwiftUI模板,但是勾选“核心数据”框,我将从Apple获得大量的模板代码,而无需进行任何操作且无需更改任何一行代码,我收到一条错误消息进行编译。.
错误是:“在范围内找不到项目”
令人沮丧的是,特别是因为我所有的教程都以经典的“ AppDelegate”文件配置开始。.而新的SwiftUI是“通用的”!
我检查了文件.xcdatamodeld
,它看起来不错,并具有'Item'实体。为什么不编译?
所以我现在不知所措,是否有解决方案,或者这是一个bug,需要等待Apple发布修复程序。如果是这样,那么在此之前我不需要开始一个新项目!
PS今天,我用CMD-ALT-SHIFT-K清除了缓存,关闭了Xcode,从模拟器中删除了该应用程序,重新打开,重建并完成了编译..但是模拟器中什么都没有!我们正在进步!仍然我没有更改代码行。一切都已经成为Apple模板了!
解决方法
正常的Xcode清除对我有用:
- 清理构建文件夹(shift + command + k)
- 完全关闭Xcode
- 删除“ DerivedData”内容(/ Library / Developer / Xcode / DerivedData)
- 再试一次(运行Xcode并构建)
首先,这不是您的应用程序的问题,而是预览的问题。您的应用程序在模拟器上正常运行。白屏是因为你需要用 NavigationView() 包裹你的列表才能看到添加和编辑按钮。看到这个答案: https://stackoverflow.com/a/66234095/15224199
之后,您将在模拟器上看到添加和编辑按钮。 但是您也必须修复预览。它不起作用,因为您有一个空实体,您需要模拟它。 转到 Persistance.swift,您应该添加与我的类似的 for 循环以在预览变量中创建模拟项:
static var preview: PersistenceController = {
let result = PersistenceController(inMemory: true)
let viewContext = result.container.viewContext
for _ in 0..<10 {
let newItem = Item(context: viewContext)
newItem.timestamp = Date()
}
do {
try viewContext.save()
} catch {
// Replace this implementation with code to handle the error appropriately.
// fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application,although it may be useful during development.
let nsError = error as NSError
fatalError("Unresolved error \(nsError),\(nsError.userInfo)")
}
return result
}()
最后确保您的预览使用这些模拟值:
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environment(\.managedObjectContext,PersistenceController.preview.container.viewContext)
}
之后,它应该可以正常工作,希望它有所帮助。 不知道为什么苹果提供的模板一开始不能正常使用。
,对于全新项目,请按Command + B进行构建,就可以了。
,我没有发现其他答案对我有用,但实际上是:
- 打开(ProjectName).xcdatamodel
- 向Item实体添加属性,不必管什么,我只添加类型为“ String”的“ foo”
- Cmd-B建立 (然后您就可以删除新属性了。)
如果仍有问题,您可能忘记将 .xcdatamodel
文件添加到测试目标。
我遵循了上述建议并使用了 Cmd+B 并且它起作用了。它要求我撤销然后授权我当前的计算机。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。