【问题标题】:Content Previewer not loading on Xcode 12.5.1内容预览器未在 Xcode 12.5.1 上加载
【发布时间】:2021-10-11 11:01:55
【问题描述】:

前几天我正在处理一个项目,但我的预览停止了工作。我收到错误“编译失败,在范围内找不到“DataType””(所有代码/关系将在下面显示)。我已经重新启动了几次 XCode,甚至注释掉了该代码区域,但它仍然无法正常工作,是否有其他人遇到此问题,我该如何解决?

我正在预览一个名为“Profile Sheet”的工作表,只是一个标准的 swiftUI 视图,所以预览代码如下所示:

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

在配置文件中,它正在从与我的模型文件(不同的结构,不同的文件)关联的静态函数中访问数据,它正在使用的函数以及定义“DataType”的函数,有问题的泛型在这里:

static func saveData<DataType>(data: DataType, for key: String) {
        defaults.setValue(data, forKey: key)
    }
    
static func retrieveData<DataType>(defaultValue: DataType, for key: String) -> DataType {
        guard let value = defaults.value(forKey: key) as? DataType else {return defaultValue}
        return value
    }
    
static func saveComplexData<DataType>(data: DataType, for key: String) where DataType: Codable {
        let encodedData = try! JSONEncoder().encode(data)
        defaults.setValue(encodedData, forKey: key)
    }

static func retrieveComplexData<DataType>(defaultValue: DataType, for key: String) ->  DataType where DataType: Codable {
        guard let retrievedData = defaults.value(forKey: key) as? Data else { return defaultValue}
        let decodedData = try! JSONDecoder().decode(DataType.self, from: retrievedData)
        return decodedData

    }

所有这些功能都按预期进行,并且显然可以编译。即使当我运行以启动预览器并编译我的应用程序时,它是否正确构建,它仅在它尝试启动预览模拟器时。

最后,我认为 Id 完全删除了这些函数,只是尝试显示一个与它们无关的视图,所以我预览了 Text("test") 并得到了同样的错误。

在 Xcode 13 beta 3 和 4 上,我可以运行模拟器,但我不能只在这些 beta 上工作,因为它们仍然相当不稳定。

任何帮助表示赞赏:)

【问题讨论】:

  • 您是否尝试清除 XCode 缓存?转到: 并删除那里的 Project Build Data and Indexes。

标签: swift xcode swiftui preview xcode12


【解决方案1】:

我在框架中看到了很多奇怪的行为,我认为是由于对模拟器进行了更改以支持 Apple 芯片。我的临时解决方法是,在我的应用程序/扩展目标中,在为模拟器构建时将“arm64”添加到排除架构构建设置(正如您的预览似乎正在尝试做的那样),并将“仅构建活动架构”设置为否对于所有方案。可能值得一试。

根据苹果开发者答案中的三元组。

尝试检查一下 https://developer.apple.com/forums/thread/657913

我相信这不是您的代码的问题,而是由于苹果硅 mac 导致的 Xcode 问题。尝试进行软件更新并重新安装 Xcode。

【讨论】:

  • 非常感谢,我刚刚做到了这一点,我可以再次预览。我还将在这篇文章中循环使用您的解决方案,对于遇到此问题的任何其他人,这两者似乎密切相关:) stackoverflow.com/questions/63607158/…
  • 我还要补充一点,您必须将“arm64”排除到所有目标以及应用程序本身,否则它仍然无法预览
  • ??????????
  • 这个解决方案对我不起作用,多个只包含 arm64 而不是 x86-64 的库存在错误
  • @Oleg991 你是在 M1 芯片上运行它吗?因为它对我来说适用于 M1 芯片
猜你喜欢
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 2015-05-24
  • 2022-09-23
相关资源
最近更新 更多