我使用 SwiftUI 构建了一个使用 Xcode 11 的第二个测试版的应用程序,一切正常,但现在,在第 3 个测试版中,该应用程序甚至没有构建。我收到诸如"使用未声明类型'视图'"、"未知属性'状态'"等错误。我能做什么?问题是在我的代码中还是只是一个错误?
问题是当我尝试构建应用程序以在我的 Mac 上运行时(使用 UIKit for Mac(
@State var score = 0
错误是"未知属性'状态'">
struct ContentView : View {
/*...*/
}
错误是"使用未声明的类型'视图'">
在Xcode 11.2上遇到了同样的问题。发现原因是我在同一个模块中的某个地方声明protocol State {}
.这会破坏编译器,没有任何合理的错误。
这是来自 Xcode 11 Beta 3 发行说明。
已知问题
- Xcode 11 不支持在 macOS 的 iPad 应用程序中使用 SwiftUI。(41416222、51201699(
我自己下载了Xcode 11 Beta 3只是为了确认您提到的错误,并且在尝试为Mac构建SwiftUI项目时遇到了同样的问题。
如果可能的话,我建议重新使用Xcode Beta 2。不幸的是,Apple不提供以前测试版的下载链接,因此希望您的计算机上仍然安装了Time Machine备份或Beta 2。否则,在下一个测试版发布之前,您可能会不走运。
我在 Beta 5 中遇到了同样的"未知属性'状态'"问题。但我做的是"@state"而不是"@State"。案情重大。很难注意到,因为两种方式都显示为紫色。
如果您正在执行 Kotlin 多平台项目,请检查您的共享模块是否有名为"State"的组件。
我在尝试编译在 Xcode 11 上使用 Xcode 13 创建的 Swift 项目时遇到了同样的错误。问题是较新的版本使用 SDK 12.1,而旧版本使用 SDK 10.15。为了让项目在较旧的 Xcode/SDK 上编译,我刚刚执行了以下步骤:
-
从 SWIFT 源代码中删除
@main
属性 -
在框架、库和嵌入式内容部分添加 Cocoa.framework
-
将一个名为 main.m 的文件添加到包含以下内容的项目(无桥头(:
#include <Cocoa/Cocoa.h>
int main(int argc, const char * argv[]) {
return NSApplicationMain(argc, argv);
}
代替@main,请替换@UIApplicationMain。我附上了屏幕截图。https://prnt.sc/vimvwn