- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 RAC4 开发一个应用程序,它从服务器获取城市对象列表并将它们作为 JSON 返回。我通过将每个城市及其适当的属性存储为 City 对象来处理响应。然后,我将每个城市映射到 CityViewModel 类型,并将 [CityViewModel] 类型的数组存储为 MutableProperty。从这里每个城市都被归档到一个 tableViewCell 中,并在单元格中使用名称和下载进度条显示。点击时,单元会触发另一个服务器请求,使用城市 nid(城市 ID)作为参数来下载包含图像等的大型 .zip 文件。
此处的目标是通过进度的实时更新为进度条设置动画。点击时,单元格调用 downloadCityData(nid: Int)
启动一切的功能。
问题是,在更新城市属性的同时,城市 MutableProperty<[CityViewModel]>
在 DataViewModel
之外没有通知它的听众任何变化目的。 (在这种情况下是 DetailViewController
)
View Controller :
class DetailViewController: UIViewController {
@IBOutlet weak var cityTableView: UITableView!
private var bindingHelper: TableViewBindingHelper<CityViewModel>!
var viewModel: DetailViewModel?
override func viewDidLoad() {
super.viewDidLoad()
self.viewModel = DetailViewModel()
self.viewModel!.cities.producer
.startOn(UIScheduler())
.startWithNext{ x in
/// this doesn't hear any changes as progress updates
}
bindingHelper = TableViewBindingHelper(tableView: cityTableView, sourceSignal: self.viewModel!.cities.producer, nibName: "CityCell")
}
}
View 模型:
class DetailViewModel: NSObject {
var dataManager: DataManager
let cities = MutableProperty<[CityViewModel]>([CityViewModel]())
override init() {
self.dataManager = DataManager()
super.init()
self.dataManager.progressMarker.producer
.observeOn(UIScheduler())
.startWithNext{ [weak self] (nid, progress) in
self!.cities.value = (self!.cities.value.map{ city in
if city.nid.value == nid {
print(nid, progress)
city.downloading.value = true
city.progress.value = progress
}
return city
})
}
}
func downloadCityData(nid: Int) -> SignalProducer<(JSON?, Float), NSError> {
return dataManager.getCityData(nid)
.on(next: { (json, progress) in
/// download complete
print("download complete")
self.cities.value = (self.cities.value.map{ city in
if city.nid.value == nid {
city.downloading.value = false
city.downloadedBool.value = true
city.upToDate.value = true
}
return city
})
})
}
}
数据管理器:
class DataManager: NSObject {
private let restClient = RestClient()
let progressMarker = MutableProperty<(Int, Float)>(0, 0)
override init() {
super.init()
}
func getCityData(nid: Int) -> SignalProducer<(JSON?, Float), NSError> {
return restClient.fetchCityData(nid)
.filter{ (fileName, progress) in
self.progressMarker.value = (nid, progress)
return fileName.characters.count > 0
}
.flatMap(FlattenStrategy.Latest, transform: unzipCityData)
.flatMap(FlattenStrategy.Latest, transform: unpackCityData)
}
}
城市景观模型:
class CityViewModel: NSObject {
private let city: City
let name: ConstantProperty<String>
let nid: ConstantProperty<Int>
let progress: MutableProperty<Float>
let downloading: MutableProperty<Bool>
let downloadedBool: MutableProperty<Bool>
let downloadedString: MutableProperty<String>
let upToDate: MutableProperty<Bool>
init(city: City) {
self.city = city
name = ConstantProperty(city.name)
nid = ConstantProperty(city.nid)
progress = MutableProperty(city.progress)
downloading = MutableProperty(city.downloading)
downloadedBool = MutableProperty(city.downloaded)
downloadedString = MutableProperty(city.downloaded ? "downloaded" : "download now")
upToDate = MutableProperty(city.upToDate)
super.init()
}
}
城市:
struct City {
var name: String
var nid: Int
var timestamp: Int
var progress: Float
var downloading: Bool
var downloaded: Bool
var upToDate: Bool
init() {
name = ""
nid = 0
timestamp = 0
progress = 0
downloading = false
downloaded = false
upToDate = false
}
}
最佳答案
我看到你正在使用 Colin Eberhardt's TableViewBindingHelper .看起来这正在剥夺 ViewController 监听和观察 viewModel 信号的能力。我之前在使用这个帮助程序类时也遇到过问题。
关于ios - RAC MutableProperty Producer 不向订阅者发送事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37575408/
1.Oracle官方安装文档中(下文中的doc 2,doc 3),有多处错误。最新的Release Notes(August 2006) 更正了一些,但还有不少未得到更正。 2.文中的三个脚本,
很难得到这个问题的答案。在 Oracle RAC 上,Oracle 逻辑目录如何工作?例如。如果我运行这个命令 CREATE DIRECTORY import_dir AS '/data/oracle
我使用 cx_Oracle 模块连接到独立的 Oracle 服务器,如下所示 import cx_Oracle CONN_INFO = { 'host': 'xxx.xx.xxx.x',
在单实例中,进程要想修改数据块,必须在数据块的当前版本(Currentcopy)上进行修改RAC环境也一样 这便涉及到一系列问题: 如何获得数据块的版本在集群节点间的分布图? 如何知道哪个节点
来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Online Learning via Memory: Retrieval-Augmented Detector Adaptati
我有各种使用序列的数据库应用程序,我正在将这些应用程序从不带 RAC 的 10g 迁移到带 RAC 的 11g。我需要有序的序列并且可以容忍间隙。 我正在考虑按顺序进行缓存序列,我不知道对性能有何影响
我在一个 View 中有很多 UISegmentedControl(实际上是 74 个),我想使用 RACChannel 与它们各自的模型属性进行双向绑定(bind)。为了减少代码,我想在运行时使用
我知道这听起来很明显,但我收到以下错误:No known class mehtod for selector rac_sendAsynchronousRequest 一行: return [[[NSU
我正在构建一个可滑动的单元格,向该单元格添加平移手势。基本上,它与 Mailbox 应用程序中的单元格具有相同的外观和感觉,您有一个顶 View ,您可以向左或向右滑动以显示下面的另一个 View (
我正在尝试熟悉 Reactive Cocoa,但在组合信号时遇到了问题。 我知道 combineLatest 或 zip 只会在所有组合信号至少发送一个值时发送一个值。但是,如果任何信号发送一个值,是
更新: 代替: RACSignal * mergedItemsSignals = [RACSignal merge:itemSignalsArray]; 像这样生成新信号: RACSignal * m
我很好奇是否有人针对 NoSQL 数据库与 Oracle(特别是我在谈论 Oracle RAC)中的数据访问进行了基准测试?该项目需要处理至少 10mil+ 的记录,在其中搜索(但不一定非要实时),r
我最近遇到一个问题“您的应用程序是否支持 RAC?”。我对此一无所知。我试着检查它的含义,但没有人解释过这个概念。他们到处都从第 2 步开始,即如何进行编码、配置等。但是没有人将“RAC 感知”作为一
前言 相信在 Redhat 7 上安装过 Oracle 12CR2 RAC 的朋友,看了本文一定会后悔没有早点看到这篇完美的避坑指南! 如果有朋友不信邪,可以按照常规的方式安装,大概率是会遇
Oracle RAC提供两种方式实现负载均衡,第一种是纯技术手段,即在用户连接时,根据系统当前的负载情况决定由哪个节点处理用户请求;第二种是面向业务,人为的把应用切分成很多service,通过某个s
1)、检查集群状态: [grid@rac02 ~]$ crsctl check cluster CRS-4537: Cluster Ready Services is
有什么方法可以取消RACCommand的执行吗? 例如,我有一个具有无限执行信号的命令,如下所示: RACCommand *command = [[RACCommand alloc] initWith
我开始使用 Reactive Cocoa 研究 MVVM 模式,现在我有一些不清楚的情况。我想将按钮的 enable 属性与我的模型绑定(bind),并同时绑定(bind) rac_command。这
我正在尝试将 Reactive Cocoa 库添加到我的 Xcode 项目中,但我做不到。我正在尝试查找一些教程,因为我无法理解 Reactive Cocoa 页面中的教程。如何将此库添加到我的项目中
我对使用 ReactiveSwift 和 ReactiveCocoa 相当陌生,我似乎遇到了有关初始化具有依赖项的属性的正确方法的障碍。 例如在下面的代码中,我尝试初始化一个属性,但我得到了预期的编译
我是一名优秀的程序员,十分优秀!