在归档/构建使用 SwiftUI 平台 <= iOS 10 的应用程序时,编译器会抛出错误“使用未声明的类型”。
即使封闭类型被标记为 @available(iOS 13.0, *) 并且还使用 #if canImport(SwiftUI),也会发生这种情况。
SwiftUI 框架也是弱链接。
如果您在 iOS 11+ 设备上运行(调试),或者为最低支持版本 <= iOS 11 的目标存档,则一切正常。
Kun*_*rma 10
发生此故障是因为使用早于 iOS 11 的部署目标构建的构建也将针对 armv7 架构构建,并且 iOS SDK 中没有用于 SwiftUI 的 armv7 swiftmodule,因为首次引入的操作系统版本 (iOS 13) 不支持armv7 了。
我通过将 SwiftUI 代码/文件包装在#if arch(arm64).
例子 -
#if arch(arm64)
@available(iOS 13.0, *)
struct MyCustomView: View {
var myStrings: [String]
var body: some View {
List {
ForEach(myStrings) { str in
Text(str)
}
}
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
如果您的部署目标 <= iOS 10,这确实会禁用预览。但如果仅在存档时使用,这确实有效。
如果有人知道更好的解决方案。请分享。
添加此答案,以便我的情况下的某人至少可以使其与 SwiftUI 一起使用。
干杯!