- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
假设我有以下 SwiftRx (2.0.0-beta.4) MVVM 情况:
我有 4 件事:
ItemsManager 有一个名为 items() 的函数,它将以可观察的 RxSwift 方式返回 Items。
ItemsViewModel 现在只需要向上传递项目。为了 View Controller 的缘故,稍后可能会在 Item 属性上应用显示逻辑(比如正确显示日期。)
ItemListViewController 会将项目放入表中,每行一个项目。
一个项目有 4 个属性(如标识符、日期等),它们将显示在表格行单元格中。
如何在 ItemsViewModel 和 ItemsManager 中进行设置,以便在管理器中添加、删除和更改项目时,它们会通过 ItemsViewModel?
从阅读 documentation 和查看 Rx.playground 来看,现在似乎要使用的是 RxSwift PublishSubject< Item > 或者可能是 RxSwift map以某种方式订阅了经理的项目()
如何做好这件事?
ItemsManager 现在有这样的东西:
func items() -> Observable<Item> {
// placeholder for now
return [Item(identification: "123", content: ""), Item(identification: "456", content:""), Item(identification: "789", content:"")].toObservable()
}
View 模型中有这个:
let items = Variable(/* how to subsribe to the items in the manager? */)
最佳答案
下面是一个人为的解决方案,也就是展示了一般方法并且更容易理解的东西:
import UIKit
import RxSwift
import RxCocoa
struct Item {
let identification: String
let content: String
}
struct ItemsManager {
let items: Variable<[Item]> = Variable<[Item]>(
[Item(identification: "some id1", content: "some content"),
Item(identification: "some id2", content: "some more content")]
)
}
struct ItemsViewModel {
let itemsManager = ItemsManager()
let myItems:Observable<[String]>
init() {
myItems = itemsManager.items
.map({ someArrayOfItems in
return someArrayOfItems.map {$0.content }
})
}
}
class ItemListViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
let itemsViewModel = ItemsViewModel()
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
itemsViewModel.myItems
.bindTo(tableView.rx_itemsWithCellIdentifier("itemListCell")) { (row, element, cell) in
guard let myCell: UITableViewCell = cell else {
return
}
myCell.textLabel?.text = element
}
.addDisposableTo(disposeBag)
}
}
关于swift - RxSwift MVVM 如何使用项目管理器设置 View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34168018/
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我需要建议,我们有三个独立的项目,但其中一些项目共享一些依赖项,其他项目则与上下文相关。在maven pom中使用继承更好还是使用依赖更好? 最佳答案 取决于您所说的“与上下文相关”的含义。 一般来说
我正在寻找有关如何管理一个项目的多个版本的一些提示和技巧。 目前我有一个应用程序的开发版本,其中包括一些改进和新功能。与此同时,我必须解决一些错误。修复新功能未触及的文件上的错误很容易,但只要我触摸具
我的公司正在使用 GIT 重组我们的存储库。基本上,我们将有: (A) Master Repo,它是我们构建的生产部署的未构建镜像 (B) 用于修补程序的持续集成分支, (C) 用于主要/次要更新
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我想问一下你们中是否有人有任何经验{and,or}可以向我指出一个适用于 {Scala,Ensime,SBT} 的 Emacs 项目管理扩展。如果它不需要太多的黑客攻击,那也将是惊人的。我过去做过一些
我在 Eclipse 中同时使用 Java (J2SE) 和 C++(使用 CDT 插件)。所以我想管理单独的 Java 项目和 C++ 项目。我切换 C++ 视角,我看到一个名为“C/C++ 项目”
在服务器环境中,我希望编写URL路径来查询数据。在 Electron 中,因为我可以在应用程序的任何部分使用普通的 JavaScript 使用 NodeJS,所以两者之间似乎没有“分离”。 大部分代码
有人有使用 Maven 管理基于 C# 的项目的经验吗? 如果是,请告诉我几句话,创建这样的设置会有多奇怪。 谢谢 最佳答案 Maven 与语言无关,应该可以将它与 Java 以外的其他语言一起使用,
随着团队建设以及相关业务的日益增长,越来越多的 NPM 包需要多人协同维护,各个项目之间有关联,就不得不在多个编辑器之间切换,以及通过 npm link 来调试,开发的效率受到制约,那有没有一种
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是偏离
我知道VSS is awful,我只是伟大的生活机器中的一枚齿轮,并且学会了在治疗师的帮助下过着无力的感觉。但是,我想给这里带来一些混乱,与VSS集成的像FogBugz这样的真实问题跟踪/项目管理系统
我有一个 C++ 解决方案项目。对于该项目,我有一些配置文件,我想在项目中进行管理,并且在构建项目时,将这些配置文件添加到适当目录结构中的可执行构建路径中。 例子: test.exe 引用 confi
我刚刚迁移到 Android Studio,我对如何管理我的项目/模块有些困惑。 例如,在 Eclipse 中我有 3 个项目: 库项目(有几个 jar 库) App 项目 1(使用 Library
情况 我有项目 A 和项目 B,A 通过 Composer 依赖于 B。 B 在 A 中实现接口(interface)的功能。 我在 B 中有正确执行的单元测试。 现在,我想通过 API 进行测试——
我遇到了 Maven 的问题 ── bom-porject ├── pom.xml 这是bom proejct,仅用于外部maven依赖的依赖管理。 该项目只是将pom文件发布到maven r
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 3 年前。 Improve
再次声明:如果您投 -1,请发表评论解释原因。这篇文章不是关于您是否赞成这种方法,而是关于如何去做。 像许多架构师一样,我通过多年的经验制定了编码标准,我希望我的开发人员能够遵守这些标准。 对于那些认
对于在 TFS 中处理我们的项目的最佳方式,我有点困惑。 我们是符合 CMMI 3 级(致力于 4 级)的组织。因此,我们目前正在 TFS 中使用 MSF CMMI 流程模板,我正在对其进行定制以更好
我是一名优秀的程序员,十分优秀!