我试图在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/

10-13 03:44