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

mul*_*des 41 core-data ios swift swiftui

[编辑] 我希望 Apple 能够修复明显的错误。解决方法是清除缓存,关闭并重新打开Xcode。

我正在使用 Xcode Beta 并开始一个新项目,但没有编写一行代码,我已经收到错误消息。我在网上找不到任何东西。也许这太新了?

在新版本的 Xcode 中,我选择了新项目,

选择新项目

然后用核心数据勾选框

勾选方框核心数据

如果我不勾选这个框,我会得到带有“hello world”的常用 Xcode SwiftUI 模板,但是勾选 Core Data 框,我会从 Apple 那里得到更多的模板代码,并且没有触及任何东西,也没有更改任何一行代码,我得到一个错误信息编译它..

错误

错误是:“在范围内找不到项目”

非常令人沮丧,尤其是因为我所有的教程都是从经典的“AppDelegate”文件配置开始的……而新的 SwiftUI 是“通用的”!

我检查了文件.xcdatamodeld,它看起来不错,并且有“项目”实体。为什么不编译?

所以我现在不知所措,是否有解决方案或者这是一个错误,需要等待Apple发布修复程序。如果是这样,在那之前我不需要开始一个新项目!

PS 今天我用 CMD-ALT-SHIFT-K 清理了缓存,关闭了 Xcode,从模拟器中删除了应用程序,重新打开,重建,它确实编译了......但模拟器中什么都没有!我们在进步!我仍然没有更改一行代码。一切都是Apple模板!

在此处输入图片说明

Ida*_*dan 49

正常的 Xcode 清除对我有用:

  1. 干净生成文件夹(SHIFT+ COMMAND+ K

  2. 完全退出Xcode

  3. 删除项目中的内容, DerivedData/{Project Name}_some_hash

    默认位置是 ~/Library/Developer/Xcode/DerivedData,但如果找不到,请检查Xcode 下的派生数据属性?喜好 ?地点

  4. 再试一次(运行 Xcode & build)

  • 我希望苹果现在已经修复了它......但是,是的,每个新项目仍然需要重新启动! (3认同)
  • 第3步似乎没有必要! (2认同)

Jac*_*cob 10

对于一个全新的项目,按Command+B编译就可以了。


小智 6

首先,这不是您的应用程序的问题,而是预览的问题。您的应用程序在模拟器上正常运行。白屏是因为你需要用 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
}()
Run Code Online (Sandbox Code Playgroud)

最后确保您的预览使用这些模拟值:

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
    ContentView().environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
}
Run Code Online (Sandbox Code Playgroud)

之后,它应该可以正常工作,希望它有所帮助。我不知道为什么苹果提供了一个一开始就不能正常工作的模板。