Rx-Swift Clean架构

A.S*_*A.S 6 ios swift rx-swift

我想用干净的架构设计我的swift应用程序.

我已经阅读了下面关于swift的干净架构的链接

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

我使用这些模板来创建应用程序.

我想问一下这是否是最好的架构,因为我想使用Rx-Swift进行编码.

如果有人可以指出一些干净的架构和反应迅速的工作示例,我将不胜感激.

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

任何帮助将不胜感激.谢谢.

Cru*_*ruz 5

嗨我最近使用rxswift和干净的架构项目

就我而言,我在Profile场景中使用它们,特别是看起来像instagram

在此输入图像描述

配置文件场景的用例

  • 用户应刷新配置文件场景
  • 用户应该有机会照片的类别
  • 用户应加载更多照片,如分页

问题是,用户可以迅速改变帖子的类别

上次提取的帖子应该与所选类别不同:(

所有事件导致事件asyncronousely

所以我使用rxswift

在Interactor中有profileWorker(用于获取个人资料和类别的帖子数),postWorke(用于获取帖子)

并创建三个rxswift,PublishSubject如 - rxCategory - rxProfile - rxPosts

步骤如下

Interactor 订阅 rxCategory

ViewController 请求类别更改为 Interactor

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

Interactor 使用rxswift的flatMapLatest请求帖子和postWorker选择的类别

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)
                }
        }
 }
Run Code Online (Sandbox Code Playgroud)

PostsWorker请求Observable<[Posts]>PostService(使用Alamofire和请求服务器SwiftyJSON)

然后PostService返回Observable<Posts>然后工人返回到交互者

Interactor订阅PostsWorker的Observable和更新帖子,这会导致rxPosts事件发生

Interactor订阅rxProfilerxPosts使用combineLatest

并要求提出综合回应 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!)
        }
 }
Run Code Online (Sandbox Code Playgroud)

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

在这种情况下,如果用户点击FOOD类别和工作人员获取许多帖子

然后用户点按PLACE类别并获取小帖子

虽然用户点击人类.在人们的帖子之后获取食物帖子

所以我使用rxswift使用flatMapLatest ReativeX - FlatMapLatest正确匹配所选类别

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

rxswift在MVVM架构中有用.

但我认为由你决定如何使用它们

谢谢你阅读:)