我试图做一些简单的模型 - 使用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;
}
运行时,我只是将一个"无法识别的选择器发送到实例"错误。
答案 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!