【问题标题】:How to use RACObserve in swift如何快速使用 RACObserve
【发布时间】:2018-04-13 00:58:01
【问题描述】:

这个新的现有项目正在使用带有 RACObserve(Reactive cocoa) 的 Objective-C 代码来读取 api 响应。 我想将 obj-c 转换为 swift 。

当前的 Obj-c 实现是:

@interface ObjCTableViewCell : UITableViewCell
@property (nonatomic, strong) OfferPersonal *offer;

@end

.m 类->

- (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 不太明白。

【问题讨论】:

    标签: objective-c swift restkit reactive-cocoa


    【解决方案1】:

    新项目是否使用 ReactiveSwift 并且所有内容(模型、单元格、视图控制器)都用 Swift 重写?如果没有,您可以使用 ReactiveObjcBridge 从 Swift 调用旧的 ReactiveCocoa ObjC 库。

    如果是,您应该使用 MutableProperty<String> 替换 name String 属性,并且您可以绑定到 MutableProperty - 两个选项是:

    a:绑定运算符<~

    nameLabel.reactive.text <~ offer.lender.name

    b:通过访问其信号

    offer.lender.name.signal.observeValues { (value: String) in nameLabel.text = value }

    此外,根据属性更新的次数,您可能希望将观察结果限制为仅一个值,例如 .signal.take(first: 1).observeValues { ... }signal.take(until: reactive.prepareForReuse)

    【讨论】:

      猜你喜欢
      • 2014-11-17
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多