结构“状态”不能用作属性

jjr*_*mos 2 macos ios swift watchos swiftui

我在ContentView.swift文件中有以下代码:

struct ContentView: View {
    @State private var selectedSpeed: Int = 1
    
    var body: some View {
        Text("Hello World")
    }
}
Run Code Online (Sandbox Code Playgroud)

为了可读性,我简化了它。我知道这selectedSpeed没有被使用。

selectedSpeed声明的行中,我收到以下错误:结构“状态”不能用作属性

有趣的是,在 Playground 中粘贴完全相同的代码会成功构建。我在 Xcode 12.1 上。我已经尝试了 nuking 派生数据和重新打开 Xcode 的组合,但错误仍然存​​在。任何想法这里有什么问题?

vfn*_*vfn 14

该名称State不受保护,并且根据您State在其他地方声明的回复/答案,无论是在您自己的应用程序中还是在您可能导入到该文件中的依赖项中。

您可以通过显式设置正确的“命名空间”来告诉编译器要使用什么符号。

例如:

struct ContentView: View {
    @SwiftUI.State private var selectedSpeed: Int = 1
    
    var body: some View {
        Text("Hello World")
    }
}
Run Code Online (Sandbox Code Playgroud)


jjr*_*mos 5

事实证明,我的项目中有一个struct电话State,这导致了问题。

TL;DR:如果你打算使用 SwiftUI,永远不要调用你的任何结构和潜在的类 State。我会将它扩展为不使用与属性包装器冲突的内容命名您的任何类或结构。

这也解释了为什么 Playground 中一切正常。

报告导航器实际上是在给我提示

在此处输入图片说明