AgnesUnicorn 0.0.4

AgnesUnicorn 0.0.4

Undead1116 维护。



 
依赖关系
RxSwift>= 0
RxCocoa>= 0
 

Agnes

CI Status Version License Platform

Saturation

简单要求如下

在 MVVM 与 RxSwift 中,我们可能会遇到以下情况:

如果我们能在 ControllerB 中使用 viewModelA 的实例,那将非常出色!但是,由于我们的基础设施指南,由于它们位于不同的模块中,我们不能进行导入操作。

实际上,即使 A 和 B 都在同一模块中,ControllerB 中对 ViewModelA 的引用也不够优雅。

用法

Agnes 让您的_viewModels_在不同模块或组件之间交互,就像在 MVVM 中的正常绑定一样。

所以,在您的 _ViewModelA_ 中,您只需使用一个常见的键调用 donate 方法来保持当前的 signal,然后其他人可以 onNext 或对其进行一些操作以 bindTo

extension String : Unicorn
{
    
}


class ViewModel : NSObject {
    
    let input: PublishRelay<String> = PublishRelay()
    
    let output: PublishRelay<String> = PublishRelay()
    
    override init() {
        super.init()
        input.donate(key: key, to: agnes).bind(to: output)
    }
}

在 PublishRelay 中的所有泛型类型 T 都应实现 Unicorn,这是 Agnes 的信念~。

然后我们可以调用其他控制器中 ViewModelA 的 input

class SecondViewController: UIViewController {

    let disposeBag = DisposeBag()
    let secondPusher: PublishRelay<String> = PublishRelay<String>()
    @IBOutlet weak var secondButton: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        secondButton.rx.tap.map { "Unicorn comes!" }.bind(to: secondPusher).disposed(by: disposeBag)
        secondPusher.bind(to: agnes.unicorn(key: key)).disposed(by: disposeBag)
        // Do any additional setup after loading the view.
    }
}

示例

运行示例项目,首先克隆仓库,然后从示例目录运行pod install

需求

  • Xcode 9.0 +
  • Swift 4.0 +

安装

AgnesUnicorn 可通过 CocoaPods 获取。安装它,只需将以下行添加到 Podfile 即可

pod 'AgnesUnicorn'

作者

[email protected][email protected]

许可证

AgnesUnicorn 遵循 MIT 许可证。更多详情请查看 LICENSE 文件。