Rx-Swift 干净的架构

Rx-Swift Clean architecture

我想使用简洁的架构设计我的 swift 应用程序。

我已经阅读了下面关于 swift

的干净架构的 link

http://clean-swift.com/blog/

我已经使用这些模板创建了应用程序。

我想问一下这是否是最好的架构,因为我想使用 Rx-Swift。

此外,如果有人能指出一些具有反应性的干净架构的工作示例,我将不胜感激 swift。

使用 Uncle Bob 的 Clean Architecture for swift(http://clean-swift.com/blog/) 是 Rx 的最佳实践Swift 还是我应该使用 MVVM 架构

如有任何帮助,我们将不胜感激。谢谢。

你好,我最近使用 rxswift 和干净的架构项目

就我而言,我在个人资料场景中使用它们,尤其看起来像 instagram

个人资料场景用例

  • 用户应该刷新个人资料场景
  • 用户应该选择照片的类别
  • 用户应该加载更多类似分页的照片

问题是,用户可以快速更改 post 的类别

上次获取的 post 应该与所选类别不同 :(

所有事件导致事件异步

所以我用rxswift

Interactor 中有 profileWorker(获取配置文件和类别的 post 计数),postWorke(获取 posts)

并创建三个 rxswift PublishSubject 之类的 - rx类别 - RX配置文件 - rxPosts

步骤如下

Interactor订阅rxCategory

ViewController 请求类别更改为 Interactor

Interactor 引发事件 rxCategory.on(Event<Category>.next(category))

Interactor 使用 rxswift 的 flatMapLatest 请求 posts 到 postsWorker

rxCategory.asObservable().flatMapLatest{ (category) -> Observable<[Posts]> in
            return self.postsWorker.rxFetchPosts(requestModel, category: category)
        }.subscribe { (event) in
                if let posts = event.element {
                    self.updatePosts(posts)
                }
        }
 }

PostsWorker 向 PostService 请求 Observable<[Posts]>(使用 AlamofireSwiftyJSON 向服务器请求)

然后 PostService return Observable<Posts> 然后工人 return 到交互器

Interactor 订阅 PostsWorker 的 Observable 并更新 posts ,这导致 rxPostss 事件 accur

Interactor 使用 combineLatest

订阅 rxProfilerxPosts

并请求提交对 Presentor

的综合回复
Observable.combineLatest(rxProfile, rxPosts) { (e1, e2) -> ProfileResponse in

            return ProfileResponse(profile: e1, posts: e2)

            }.subscribe { (event: Event<ProfileResponse>) in
                self.output.presentProfile(event.element!)
        }
 }

这是我使用 rxswift + clean swift 架构的例子

在这种情况下,如果用户点击 FOOD 类别并且工作人员获取许多 post s

然后用户点击 PLACE 类别并获取小的 post 然后有时

尽管用户点按人物类别。在人们 posts

之后获取食物 posts

所以我使用 rxswift 使用 flatMapLatest ReativeX - FlatMapLatest

正确匹配所选类别

这可以获取并呈现给 Presentor 最新类别的 posts

rxswift 已知在 MVVM 架构中很有用。

但我认为如何使用它们取决于您

感谢您的阅读:)