zoukankan      html  css  js  c++  java
  • [RxSwift]RxSwift: ReactiveX for Swift

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(let_us_code)
    ➤博主域名:https://www.zengqiang.org
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/13563328.html
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    热烈欢迎,请直接点击!!!

    进入博主App Store主页,下载使用各个作品!!!

    注:博主将坚持每月上线一个新app!!!

    ReactiveX(简写: Rx) 是一个可以帮助我们简化异步编程的框架。

    RxSwift 是 Rx 的 Swift 版本。

    它尝试将原有的一些概念移植到 iOS/macOS 平台。

    你可以在这里找到跨平台文档 ReactiveX.io

    KVO,异步操作 和 流 全部被统一成抽象序列。这就是为什么 Rx 会如此简单,优雅和强大。

    操作

    下载文档电子书

    文档更新日志

    19年5月21日(RxSwift 5)

    示例

    Github 搜索...

    定义搜索结果 ...

    let searchResults = searchBar.rx.text.orEmpty
        .throttle(0.3, scheduler: MainScheduler.instance)
        .distinctUntilChanged()
        .flatMapLatest { query -> Observable<[Repository]> in
            if query.isEmpty {
                return .just([])
            }
            return searchGitHub(query)
                .catchErrorJustReturn([])
        }
        .observeOn(MainScheduler.instance)
    

    ... 然后将结果绑定到 tableview 上

    searchResults
        .bind(to: tableView.rx.items(cellIdentifier: "Cell")) {
            (index, repository: Repository, cell) in
            cell.textLabel?.text = repository.name
            cell.detailTextLabel?.text = repository.url
        }
        .disposed(by: disposeBag)
    

    必备条件

    • Xcode 10.2
    • Swift 5.0

    对于 Xcode 10.1 以下版本,请使用 RxSwift 4.5

    安装

    安装 RxSwift 不需要任何第三方依赖。

    以下是当前支持的安装方法:

    手动

    打开 Rx.xcworkspace, 选中 RxExample 并且点击运行。 此方法将构建所有内容并运行示例应用程序。

    CocoaPods

    pod --version1.3.1 已通过测试

    # Podfile
    use_frameworks!
    
    target 'YOUR_TARGET_NAME' do
        pod 'RxSwift', '~> 5.0'
        pod 'RxCocoa', '~> 5.0'
    end
    
    # RxTests 和 RxBlocking 将在单元/集成测试中起到重要作用
    target 'YOUR_TESTING_TARGET' do
        pod 'RxBlocking', '~> 5.0'
        pod 'RxTest', '~> 5.0'
    end
    

    替换 YOUR_TARGET_NAME 然后在 Podfile 目录下, 终端输入:

    $ pod install
    

    Carthage

    官方支持 0.33 及以上版本。

    添加到 Cartfile

    github "ReactiveX/RxSwift" ~> 5.0
    
    $ carthage update
    

    Carthage 作为静态库。

    如果您希望使用 Carthage 将 RxSwift 构建为静态库,在使用 Carthage 构建之前,您可以使用以下脚本手动修改框架类型:

    carthage update RxSwift --platform iOS --no-build
    sed -i -e 's/MACH_O_TYPE = mh_dylib/MACH_O_TYPE = staticlib/g' Carthage/Checkouts/RxSwift/Rx.xcodeproj/project.pbxproj
    carthage build RxAlamofire --platform iOS
    

    Swift Package Manager

    创建Package.swift 文件。

    // swift-tools-version:5.0
    
    import PackageDescription
    
    let package = Package(
      name: "RxTestProject",
      dependencies: [
        .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "5.0.0")
      ],
      targets: [
        .target(name: "RxTestProject", dependencies: ["RxSwift", "RxCocoa"])
      ]
    )
    
    $ swift build
    

    如果构建或测试一个模块对 RxTest 存在依赖, 设置 TEST=1.

    $ TEST=1 swift test
    

    使用 git submodules 手动集成

    • 添加 RxSwift 作为子模块
    $ git submodule add git@github.com:ReactiveX/RxSwift.git
    
    • 拖拽 Rx.xcodeproj 到项目中
    • 前往 Project > Targets > Build Phases > Link Binary With Libraries, 点击 + 并且选中 RxSwift-[Platform] 和 RxCocoa-[Platform]
  • 相关阅读:
    HttpClientUtil
    JacksonUtils
    spring-security oauth2.0简单集成
    python连接mysql
    钉钉机器人消息体
    Android Studio gradle
    Android Studio从Eclipse导项目
    Docker
    Unity WebGL
    主席树
  • 原文地址:https://www.cnblogs.com/strengthen/p/13563328.html
Copyright © 2011-2022 走看看