【问题标题】:How to use RxSwift in project with Objective-C code?如何在带有 Objective-C 代码的项目中使用 RxSwift?
【发布时间】:2021-05-22 06:18:45
【问题描述】:

我在一个混合了 Objective-C 和 Swift 的旧项目中工作,Objective-C 中有很多遗留代码,因此将所有内容迁移到 Swift 是不现实的。新代码是用 Swift 编写的,但 Objective-C 需要进行少量更新。

我最近一直在使用 RxSwift,我也想开始在这个旧项目中使用。

问题在于 Objective-C Swift 互操作性。

例如我不能写这个:

@objc let int = BehaviorSubject<Int>(value: 42)

因为我得到属性不能被标记为@objc,因为它的类型不能在Objective-C中表示

我该如何处理这种情况?有人在混合 objc/swift 项目中使用 RxSwift 吗?

【问题讨论】:

  • “我不能写这个” 为什么你需要写那个?为什么 ObjC 代码需要看到 BehaviourSubject
  • 我需要订阅 Swifth 和 ObjC 代码中对该属性的更改...
  • 你刚刚说“新代码是用 Swift 编写的”,所以如果你需要订阅对 in ObjC 的更改,你似乎违反了自己的规则......无论如何,注意还有ReactiveObjC
  • 请记住,Swift 中有一些构造在 Obj-C 中不可用。虽然,今天这比 7 年前(元组等)要好得多,但它仍然是正确的。并不是说这对您当前的问题有帮助,而是开始迁移到 Combine 以防止出现类似问题。
  • @BonanzaDriver 是的,我去Combine看看,谢谢!

标签: swift objective-c rx-swift


【解决方案1】:

RxSwift 的核心是带有关联值的Event 枚举。此枚举无法移植到 Objective-C。

你的问题的答案是……你不能在 Objective-C 代码中使用 RxSwift。

另一种方法是在您的 Objective-C 代码中使用 ReactiveObjC 并将 RxSwift Observables 映射到 ReactiveObjC 信号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多