私はReactiveSwiftとReactiveCocoaを使ってかなり新しく、依存関係を持つPropertyを初期化する適切な方法についてロードブロックを打ったようです。複数の依存関係を持つRAC ReactiveSwiftプロパティの初期化?
たとえば、次のコードでは、プロパティを初期化しようとしますが、予想されるコンパイラエラーが発生します。私の質問は、どのようにこれを行う "正しい"方法です/どのようです。
だから、class SomeViewModel {
// illustration purposes, in reality the property (dependency) we will observe will change over time
let dependency = Property(value: true)
let dependency2 = Property(value: "dependency2")
let dependency3 = Property(value: 12345)
let weightLabel: Property<String>
// private(set) var weightLabel: Property<String>!
// using private(set) var weightLabel: Property<String>! works,
// however this changes the meaning behind using let, because we could
// reinitalize weightLabel again which is not similar to using a let so not a good alternative
// let weightLabel: Property<String> = Property(value: "")
// another solution that will work but will result in a wrong value
// upon initalization then, changed into the "correct value" thus, i
// am discrading this as well
init() {
weightLabel = dependency.map {
// compiler error, 'self' captured by closure before all members were initalized.
// My question is if there is a way to handle this scenario properly
if $0 && self.dependency2.value == "dependency2" && self.dependency3.value == 12345 {
return ""
}
return ""
}
}
}
本当に理想的なソリューションではありません私は上記のReactiveSwift他のその後のもので、このシナリオを処理する方法がある場合は、私は疑問に思ってコメントして先に気づいたかもしれませんよう。
Sweet!この詳細な説明をありがとうございます! :) –