首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rx-快速清洁架构

Rx-快速清洁架构
EN

Stack Overflow用户
提问于 2016-10-26 10:00:13
回答 1查看 4.4K关注 0票数 6

我想设计我的快速应用程序使用干净的架构。

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

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

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

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

此外,我希望有人能指出几个工作的例子,清洁的架构,反应敏捷。

是使用Bob叔叔的http://clean-swift.com/blog/清洁架构作为RxSwift的最佳实践,还是我应该使用MVVM架构?

任何帮助都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-26 10:34:51

嗨,我用的是rxswift最近的项目

在我的例子中,我在配置文件场景中使用它们,特别是看起来像instagram。

剖面场景用例

  • 用户应刷新配置文件场景
  • 用户应偶遇照片类别
  • 用户应该加载更多的照片,就像分页

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

上一次获取的帖子应该与选定的类别不同:(

所有事件导致事件异步发生

所以我用rxswift

在Interactor中有profileWorker(用于获取配置文件和类别的post计数)、postWorke(用于获取帖子)

并创建三种类似于PublishSubject - rxCategory - rxProfile - rxPosts的

步骤如下

Interactor订阅rxCategory

ViewController请求类别更改为Interactor

Interactor原因事件rxCategory.on(Event<Category>.next(category))

使用Interactor的flatMapLatest请求发布,并将所选类别设置为postsWorker

代码语言:javascript
复制
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请求Observable<[Posts]>到PostService (请求服务器使用AlamofireSwiftyJSON)

然后PostService返回Observable<Posts>,然后工人返回到interactor

Interactor订阅PostsWorker的可观察的和更新的帖子,这导致了rxPosts事件的发生。

Interactor使用combineLatest订阅rxProfilerxPosts

和请求提交对Presentor的联合响应

代码语言:javascript
复制
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 +干净的快速体系结构。

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

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

虽然用户点击人员类别。在人们的岗位之后获得食品岗位

因此,我使用flatMapLatest ReativeX - FlatMapLatest来正确地匹配选定的类别。

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

众所周知,在MVVM体系结构中很有用。

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

(谢谢各位阅读:)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40259211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档