我希望使以下功能具有反应性
func partialRevealDrawerHeight(bottomSafeArea: CGFloat) -> CGFloat {
return driveupKeypadViewModel.selectedDigits.isEmpty ? 394 : 457
}
我使该属性可观察,导致尝试以下代码:
func partialRevealDrawerHeight(bottomSafeArea: CGFloat) -> CGFloat {
return keypadViewModel.selectedDigits
.subscribe { value in
return value.map { $0.isEmpty ? 394 : 457 }
}
.disposed(by: disposeBag)
}
我收到警告
未调用'map'的结果
以及错误
无法将类型'()'的返回表达式转换为类型'CGFloat'
我也尝试过:
return keypadViewModel.selectedDigits.map { $0.isEmpty ? 394 : 457 }
错误是
无法将'Observable'类型的返回表达式转换为'CGFloat'类型的返回
将哪种observables值用于此委托方法的正确设置是什么?
未调用'map'的结果
这是因为subscribe
块不希望返回值。
subscribe { value in
return value.map { $0.isEmpty ? 394 : 457 }
}
无法将类型'()'的返回表达式转换为类型'CGFloat'
整个返回值类型为Void类型,而函数返回所需类型为CGFloat。
keypadViewModel.selectedDigits
.subscribe { value in
return value.map { $0.isEmpty ? 394 : 457 }
}
.disposed(by: disposeBag)
我不知道您想在这里实现什么。由于selectedDigits
是可观察的,因此我可能会订阅这样的内容,而不是创建函数:
keypadViewModel.selectedDigits.map { $0.isEmpty ? 394.0 : 457.0 }
.subscribe { value in
// do work here
}
.disposed(by: disposeBag)