Rx-Swift 干净的架构
Rx-Swift Clean architecture
我想使用简洁的架构设计我的 swift 应用程序。
我已经阅读了下面关于 swift
的干净架构的 link
我已经使用这些模板创建了应用程序。
我想问一下这是否是最好的架构,因为我想使用 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]>
(使用 Alamofire
和 SwiftyJSON
向服务器请求)
然后 PostService
return Observable<Posts>
然后工人 return 到交互器
Interactor
订阅 PostsWorker
的 Observable 并更新 posts ,这导致 rxPosts
s 事件 accur
Interactor
使用 combineLatest
订阅 rxProfile
和 rxPosts
并请求提交对 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
架构中很有用。
但我认为如何使用它们取决于您
感谢您的阅读:)
我想使用简洁的架构设计我的 swift 应用程序。
我已经阅读了下面关于 swift
的干净架构的 link我已经使用这些模板创建了应用程序。
我想问一下这是否是最好的架构,因为我想使用 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]>
(使用 Alamofire
和 SwiftyJSON
向服务器请求)
然后 PostService
return Observable<Posts>
然后工人 return 到交互器
Interactor
订阅 PostsWorker
的 Observable 并更新 posts ,这导致 rxPosts
s 事件 accur
Interactor
使用 combineLatest
rxProfile
和 rxPosts
并请求提交对 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
架构中很有用。
但我认为如何使用它们取决于您
感谢您的阅读:)