swiftui - 将变量的值从视图发送到类 - SwiftUI
问题描述
我想要做的是将变量的值从视图发送到类,但我不断收到错误消息。不知道该怎么办。
这是课程:
class perfCalcDep: ObservableObject {
var tom:Double
var arm:Double
@Published var tempDep:String = ""
@Published var elevDep:String = ""
@Published var qnhDep:String = ""
@Published var windDep:String = ""
@Published var slopeDep:String = ""
@Published var rwyCondDep = 0
var altDep: Double {
let pressCalc = (1013 - (Double(qnhDep) ?? 1013)) * 30
return (Double(elevDep) ?? 0) + pressCalc
}
var altVar : Double { 0.21 * altDep }
var tempVar : Double { 24 * (Double(tempDep) ?? 0) }
var windVar : Double { 20.67 * (Double(windDep) ?? 0) }
var tomVar : Double { 2.22 * Double(2550-Double(tom)) }
var slpVar : Double { (Double(slopeDep) ?? 0) / 2 }
var tod : Double { (1700 + altVar + tempVar - tomVar - windVar) }
var todr : Double {
if rwyCondDep == 1 {
return (tod + ((0.1 * tod) * slpVar)) * 1.2
} else if rwyCondDep == 2 {
return (tod + ((0.1 * tod) * slpVar)) * 1.3
} else {
return (tod + ((0.1 * tod) * slpVar))
}
}
init(tom:Double, arm:Double) {
self.tom = tom
self.arm = arm
}
}
这是视图的一部分:
struct TakeOffPerf: View {
// The variables I want to send to the class - their values are received from the previous view.
var tMss:Double
var tArm:Double
@ObservedObject var performance = perfCalcDep(tom: tMss, arm: tArm) // Error: Cannot use instance member 'tArm' within property initializer; property initializers run before 'self' is available
@ObservedObject var settings = Settings()
var body: some View {,,,} // just a list that shows the values from the class
任何帮助将不胜感激。
解决方案
属性在 之前初始化self
,因此您不能在属性之间进行初始化依赖,但您可以在 中执行此操作init
,例如。
struct TakeOffPerf: View {
var tMss:Double
var tArm:Double
@ObservedObject var performance: perfCalcDep // << only declare !!
@ObservedObject var settings = Settings()
init(tMss:Double, tArm:Double) {
self.tArm = tArm
self.tMss = tMss
self.performance = perfCalcDep(tom: tMss, arm: tArm)
}
// ... other code
}
注意:保留原始样式,但最好将类型命名为大写,例如PerfCalcDep
推荐阅读
- c# - EF Core 2.2 中不同类的一对一
- algorithm - Kruskal 的算法能否以这种方式实现而不是使用不相交集森林?
- django - Django 模板扩展:子级不覆盖父级
- react-redux - Redux 存储更新但 mapStateToProps 不更新组件道具
- ruby-on-rails-4 - 当从rspec调用工厂的create()时,如何为子类A传递参数,父类“B”id?
- filter - 无法从我的服务器(Ubuntu14 / mailinabox)发送邮件到 gmail
- visual-studio-code - vscode 防止从特定节点模块自动导入
- kotlin - Kotlin 中的对象和数据类有什么区别?
- ruby-on-rails - 在 Rails 上创建用户的设计不起作用
- vba - VBA在MSWord中的上标和下标之前和之后插入