2015-03-04 16 views
7

Tôi đang cố gắng quan sát một thuộc tính trong ViewModel của mình, rồi cập nhật nhãn với giá trị của nó bằng ReactiveCocoa, nhưng nó không cập nhật.RACObserve không hoạt động

Đây là những gì tôi nhận:

ViewModel

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) 
     }) 

tôi đã kiểm tra và ViewModel được cập nhật 'Số tiền' bất động sản một cách chính xác. Có điều gì tôi thiếu ở đây không?

Tôi cũng đã cố gắng này để thử nghiệm:

RACObserve(self.viewModel, "amount").subscribeNext { 
    (value) -> Void in 
     println(value) 
} 

Không làm việc một trong hai.

Tôi đang sử dụng ReactiveCocoa 2.4.7 vì ứng dụng của tôi đang hỗ trợ iOS 7. Có bất kỳ sự không tương thích nào giữa thay thế macro trong Swift [1,2] và phiên bản này không?

[1] - https://github.com/ashfurrow/Swift-RAC-Macros

[2] - http://blog.scottlogic.com/2014/07/24/mvvm-reactivecocoa-swift.html

+1

Nhân tiện, hãy đọc nhận xét của Ivan trong [tham chiếu thứ hai] (http://blog.scottlogic.com/2014/07/24/mvvm-reactivecocoa-swift.html). RACObserve trong Swift khác với macro RACObserve trong Objective-C, và nó có thể là một vấn đề. –

Trả lời

14

Đánh dấu tài sản như dynamic, và chắc chắn rằng các mô hình điểm được thừa hưởng NSObject.

class MyViewModel: NSObject { 
    dynamic var amount: NSDecimalNumber 
} 
+1

Tôi quên đánh dấu thuộc tính là 'động'. Cảm ơn! – dccarmo