我试图在ViewModel中观察一个属性,然后使用ReactiveCocoa用它的值更新标签,但它没有更新。
这是我得到的:
View 模型
var amount: NSDecimalNumber
ViewController
RAC(self.amountLabel, "text") <~ RACObserve(self.viewModel, "amount").map({
(value) -> AnyObject! in
let numberFormatter = NSNumberFormatter()
numberFormatter.numberStyle = .CurrencyStyle
return numberFormatter.stringFromNumber(value as NSDecimalNumber)
})
我检查了一下,然后ViewModel正确地更新了'amount'属性。我在这里想念什么吗?
我还尝试了此方法进行测试:
RACObserve(self.viewModel, "amount").subscribeNext {
(value) -> Void in
println(value)
}
也不起作用。
我使用的是ReactiveCocoa 2.4.7,因为我的应用程序支持iOS7。Swift[1,2]中的宏替换与该版本之间是否存在任何不兼容性?
[1]-https://github.com/ashfurrow/Swift-RAC-Macros
[2]-http://blog.scottlogic.com/2014/07/24/mvvm-reactivecocoa-swift.html
最佳答案
将该属性标记为 dynamic
,并确保 View 模型继承 NSObject。
class MyViewModel: NSObject {
dynamic var amount: NSDecimalNumber
}
关于ios - RACObserve无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28857779/