Xcode 12.5.1 上未加载内容预览器
Content Previewer not loading on Xcode 12.5.1
前几天我在做一个项目,我的预览停止工作了。我收到错误“编译失败,无法在范围内找到“DataType””(所有 code/relationships 将在下面显示)。我已经重新启动 XCode 几次,甚至注释掉了那部分代码,但它仍然无法正常工作,还有其他人遇到这个问题吗?我该如何解决?
我正在预览一个名为“Profile Sheet”的 sheet,它只是一个标准的 swiftUI 视图,因此预览代码如下所示:
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ProfileSheet()
}
}
在配置文件 sheet 中,它正在从与我的模型文件(不同的结构,不同的文件)关联的静态函数访问数据,它正在使用的函数以及定义“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
}
所有这些都按预期运行,并且显然可以编译。即使当我 运行 启动预览器并编译我的应用程序时,它也会正确构建,只有在它随后尝试启动预览模拟器时才会如此。
最后,我想我应该完全删除这些函数,并尝试显示一个与它们没有关联的视图,所以我预览了 Text("test")
并得到了同样的错误。
在 Xcode 13 beta 3 & 4 我可以 运行 模拟器,但我不能只在那些 beta 上工作,因为它们仍然相当不稳定。
感谢任何帮助:)
我看到框架有很多奇怪的行为,我认为是由于模拟器更改以支持 Apple 芯片。我的临时解决方法是,在我的 app/extension 目标中,在为模拟器构建时将“arm64”添加到排除的架构构建设置中(正如您的预览似乎正在尝试做的那样),并设置“仅构建活动架构”对所有方案都为否。可能值得一试。
根据 apple 开发者答案中的三重奏。
试试看
https://developer.apple.com/forums/thread/657913
我相信这不是您的代码的问题,而是 Xcode 由于 Apple Silicon Mac 的问题。尝试进行软件更新并重新安装 Xcode.
前几天我在做一个项目,我的预览停止工作了。我收到错误“编译失败,无法在范围内找到“DataType””(所有 code/relationships 将在下面显示)。我已经重新启动 XCode 几次,甚至注释掉了那部分代码,但它仍然无法正常工作,还有其他人遇到这个问题吗?我该如何解决?
我正在预览一个名为“Profile Sheet”的 sheet,它只是一个标准的 swiftUI 视图,因此预览代码如下所示:
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ProfileSheet()
}
}
在配置文件 sheet 中,它正在从与我的模型文件(不同的结构,不同的文件)关联的静态函数访问数据,它正在使用的函数以及定义“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
}
所有这些都按预期运行,并且显然可以编译。即使当我 运行 启动预览器并编译我的应用程序时,它也会正确构建,只有在它随后尝试启动预览模拟器时才会如此。
最后,我想我应该完全删除这些函数,并尝试显示一个与它们没有关联的视图,所以我预览了 Text("test")
并得到了同样的错误。
在 Xcode 13 beta 3 & 4 我可以 运行 模拟器,但我不能只在那些 beta 上工作,因为它们仍然相当不稳定。
感谢任何帮助:)
我看到框架有很多奇怪的行为,我认为是由于模拟器更改以支持 Apple 芯片。我的临时解决方法是,在我的 app/extension 目标中,在为模拟器构建时将“arm64”添加到排除的架构构建设置中(正如您的预览似乎正在尝试做的那样),并设置“仅构建活动架构”对所有方案都为否。可能值得一试。
根据 apple 开发者答案中的三重奏。
试试看 https://developer.apple.com/forums/thread/657913
我相信这不是您的代码的问题,而是 Xcode 由于 Apple Silicon Mac 的问题。尝试进行软件更新并重新安装 Xcode.