【问题标题】:SwiftUI: Type 'Timer' has no member 'publish' [closed]SwiftUI:类型“计时器”没有成员“发布”[关闭]
【发布时间】:2021-01-22 17:27:51
【问题描述】:

有人知道为什么我的计时器没有名为“发布”的成员吗?

let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()

XCode 告诉我:

  • 无法根据成员“common”推断上下文基础
  • 无法根据成员“main”推断上下文基础
  • 类型“计时器”没有成员“发布”

感谢您的帮助!!

    import SwiftUI

let defaultTimeRemaining: CGFloat = 10
let lineWidth: CGFloat = 30
let radius: CGFloat = 70

struct Timer: View {
    
    @State private var isActive = false
    @State private var timeRemaining: CGFloat = defaultTimeRemaining
    @State private var timer = Timer.publish(every: 0.1, on: .main, in: .common).autoconnect()
    
    var body: some View {
        Text("Hello, World!")
    }
}

struct Timer_Previews: PreviewProvider {
    static var previews: some View {
        Timer()
    }
}

【问题讨论】:

  • 你在哪里写的?
  • 在内容视图中

标签: xcode timer swiftui publish


【解决方案1】:

这是我实现计时器的方式。

@State private var timer = Timer.publish(every: 0.1, on: .main, in: .common).autoconnect()

你有导入 SwiftUI 吗?

你是否也在body部分之前实现了定时器?

我不知道为什么,但也许你在变量声明之前需要@State。我也认为定时器不能是let。我认为你必须使用var-

编辑: 我想我知道问题是什么。您将struct 命名为“计时器”。当你想要创建Timer Swift 时,尝试在View Timer 上调用.publish,而不是你真正想要的Timer。将 View 重命名为 TimerView(或其他名称),然后重试。

【讨论】:

  • 我更新了问题,因为这根本不起作用:(
  • @János Dreveton 我编辑了我的答案
  • 谢谢你!从来没有愚蠢的! :)
  • 没问题。很高兴我能帮上忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多