swift 结构“State”不能用作特性

piv4azn7  于 2023-03-16  发布在  Swift
关注(0)|答案(2)|浏览(136)

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

struct ContentView: View {
    @State private var selectedSpeed: Int = 1
    
    var body: some View {
        Text("Hello World")
    }
}
  • 为了便于阅读,我简化了它。我知道没有使用selectedSpeed。*

在声明selectedSpeed的行中,我得到了以下错误:结构“State”不能用作特性
有趣的是,在Playground中粘贴完全相同的代码会成功构建。我使用的是Xcode 12.1。我尝试过删除派生数据和重新打开Xcode的组合,但错误仍然存在。你知道这里出了什么问题吗?

tct7dpnv

tct7dpnv1#

原来我的项目中有一个名为Statestruct,这导致了这个问题。

TL;DR:如果你打算使用SwiftUI,不要调用你的任何结构体,也可能是类,State。我会扩展它,不要用与属性 Package 冲突的东西命名你的任何类或结构体。

这也解释了为什么Playground的一切都很好。
报告导航器实际上是在给我提示

t40tm48m

t40tm48m2#

名称State不受保护,根据您的回复/答案,您在其他地方声明了State,无论是在您自己的应用中还是在您可能要导入到该文件中的依赖项中。
您可以通过显式设置正确的“命名空间”来告诉编译器使用什么符号。
例如:

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

相关问题