8

我使用 SwiftUI 使用 Xcode 11 的第二个 beta 构建了一个应用程序,一切都运行良好,但是现在,使用第三个 beta 版,该应用程序甚至都没有构建。我收到诸如“使用未声明的类型'View'”、“未知属性'State'”等错误。我该怎么办?是我的代码中的问题还是只是一个错误?

问题是当我尝试构建应用程序以在我的 Mac 上运行时(使用 UIKit for Mac)

@State var score = 0

错误是“未知属性‘状态’”

struct ContentView : View {
    /*...*/
}

错误是“使用未声明的类型'View'”

4

6 回答 6

10

在 Xcode 11.2 上遇到同样的问题。发现原因是我声明的同一模块中的某个地方protocol State {}。这会破坏编译器而没有任何合理的错误。

于 2019-11-27T15:48:47.350 回答
5

这是来自Xcode 11 Beta 3 Release Notes

已知的问题

  • Xcode 11 不支持在带到 macOS 的 iPad 应用程序中使用 SwiftUI。(41416222, 51201699)

我自己下载了 Xcode 11 Beta 3 只是为了确认您提到的错误,并且在尝试为 Mac 构建 SwiftUI 项目时遇到了同样的问题。

如果可能,我建议重新使用 Xcode Beta 2。不幸的是,Apple 不提供以前测试版的下载链接,因此希望您的计算机上仍然安装了 Time Machine 备份或 Beta 2。否则,在下一个测试版发布之前,您可能会不走运。

于 2019-07-10T10:09:43.130 回答
4

我在 Beta 5 中遇到了同样的“未知属性‘状态’”问题。但我正在做“@state”而不是“@State”。案件很重要。很难注意到,因为两种方式都显示为紫色。

于 2019-08-11T23:45:34.060 回答
2

如果您正在做一个 Kotlin 多平台项目,请检查您的共享模块是否有一个名为“State”的组件。

于 2021-05-11T18:59:02.030 回答
1

取而代之的是@main,请替换@UIApplicationMain。我附上了截图。 https://prnt.sc/vimvwn

于 2020-11-13T13:53:58.343 回答
0

我在尝试编译在Xcode 11上使用Xcode 13创建的 Swift 项目时遇到了同样的错误。问题是新版本使用SDK 12.1而旧版本使用SDK 10.15。为了让项目在较旧的 Xcode/SDK 上编译,我只执行了以下步骤:

  • @main从 swift 源代码中删除属性

  • 在框架、库和嵌入式内容部分添加Cocoa.framework

  • 将名为main.m的文件添加到项目中(无桥头),其内容如下:

#include <Cocoa/Cocoa.h>

int main(int argc, const char * argv[]) {

    return NSApplicationMain(argc, argv);
}
于 2022-02-22T10:49:30.677 回答