ReactiveCocoa与swift绑定的简单属性

时间:2014-10-09 12:44:52

标签: swift reactive-cocoa

我试图做一些简单的模型 - 使用swift查看与ReactiveCocoa的模型绑定

工作流程:

我的模型会加载一些数据(本例中为类别)并更新其loadingCategories状态。如果加载则为true,否则为false

然后在我的视图模型中,我希望它将自己的加载属性绑定到模型中的loadingCategories属性

这是代码。它不起作用。我能找到的唯一例子是使用UIControls的信号,我无法弄清楚如何使用这些例子进行属性绑定(没有控件)

let loading = self.categorySelector.rac_valuesAndChangesForKeyPath("loadingCategories", options: .New, observer: nil)
loading.subscribeNextAs { (l:Bool) -> () in
  self.loading = l;
}

运行时,我只是将一个"无法识别的选择器发送到实例"错误。

1 个答案:

答案 0 :(得分:4)

你的观察者参数不能为零,它应该是在属性变化上发送信号的对象(self.categorySelector)

let loading = self.categorySelector.rac_valuesForKeyPath("loadingCategories",  observer:self.categorySelector)
loading.subscribeNextAs { 
   [weak self] (l:Bool) -> () in
   if (self != nil){
       self!.loading = l;
   }
}

通过指定" unowned"确保不在关闭中保留self的所有权。否则你会有一个保留周期导致内存泄漏。

最后但同样重要的是确保您的观察属性具有动态注释:

dynamic var loadingCategories:Bool!