【发布时间】:2021-09-13 01:32:09
【问题描述】:
我正在学习一个教程,并想自己将一项功能添加到倒数计时器中。但是,我得到了错误:
不能在属性初始化器中使用实例成员“timeRemaining”;属性初始化器在“self”可用之前运行
似乎造成问题的代码在这里:
@State private var timeRemaining: CGFloat = defaultTimeRemaining
var i = timeRemaining
func timeString(time: TimeInterval) -> String {
let minute = Int(time) / 60 % 60
let second = Int(time) % 60
return String(format: "%02i:%02i", minute, second)
}
对不起,如果这是一个基本问题/问题。这是我第一次使用 Xcode :)
【问题讨论】:
-
初始值不能来自同一个
struct/class中的另一个属性。它必须在带有参数或实际值的初始化程序中完成。所以将timeRemaining和defaultTimeRemaining更改为实际数字或在初始化程序中进行 -
defaultTimeRemaining之前设置为一个数字,如下所示:let defaultTimeRemaining: CGFloat = 63。是这个问题吗? -
由于显示的时间每秒都在变化(这是在
defaultTimeRemaining变量中完成的)我需要函数的输出也更新 -
这就是问题所在。试试这个改变
@State private var timeRemaining: CGFloat = 0然后在body使用.onAppear(){timeRemaining = defaultTimeRemaining i = timeRemaining}在最上面的View -
试试Apple SwiftUI Tutorials 所有这些都是非常基本的东西
标签: swift xcode self xcode12 initializer