这个新的现有项目正在使用Objective-C Code和RACObserve(Reactive cocoa)来读取api响应。 我想将obj-c转换为swift。
目前的Obj-c实施是:
@interface ObjCTableViewCell : UITableViewCell
@property (nonatomic, strong) OfferPersonal *offer;
@end
.m class->
- (void)bindToModel {
[RACObserve(self, offer.lender.name) subscribeNext:^(id x) {
self.nameLabel.text = x;
}];
}
控制器 - >
{
ObjCTableViewCell TableViewCell *myCell;
myCell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
[myCell setValue:self.offer forKey:@"offerPersonal"];
[myCell bindToModel];
}
现在如何在Swift中使用RACObserve。我试图在其他地方搜索它。 (http://blog.scottlogic.com/2014/07/24/mvvm-reactivecocoa-swift.html)could完全不明白。
答案 0 :(得分:0)
使用ReactiveSwift的新项目是否在Swift中重写了所有内容(模型,单元格,视图控制器)?如果没有,您可以使用ReactiveObjcBridge从Swift调用旧的ReactiveCocoa ObjC库。
如果是,您应该使用name
将MutableProperty<String>
String属性替换为<~
,并且可以绑定到MutableProperty - 两个选项是:
a:绑定运算符nameLabel.reactive.text <~ offer.lender.name
offer.lender.name.signal.observeValues { (value: String) in
nameLabel.text = value
}
或
b:通过访问其信号
.signal.take(first: 1).observeValues { ... }
此外,根据属性的更新次数,您可能希望将观察限制为仅一个值,例如signal.take(until: reactive.prepareForReuse)
或1