ios - 如何在 RxSwift 中打印订阅的字典值?
问题描述
我有一个Observable
返回一个dictionary
:
func myFunc() -> Observable<[String : MyClass]> {
return service.getDictionary()
}
我如何获得keys
and values
?
viewModel.myFunc().subscribe(onNext: {
print("", $0 )
}).disposed(by: disposeBag)
没有类似.key
or的属性.value
。我使用map
或者flatMap
它是如何工作的?
解决方案
RxSwift 5.0 测试
func myFunc() -> Observable<[String : String]> {
let dict:[String:String] = ["key0": "value0", "key1": "value1", "key2": "value2","key3" : "value3"]
return Observable.just(dict)
}
myFunc()
.map { (dict) -> [(String,String)] in
let keys = Array(dict.keys)
var key_value_array = Array<(String,String)>()
for key in keys {
let key_value_tuple = (key,dict[key]!)
key_value_array.append(key_value_tuple)
}
return key_value_array
}.flatMap { Observable.from($0) }
.subscribe(onNext: { (tuple) in
print("Key is \(tuple.0)")
print("Value is \(tuple.1)")
}).disposed(by: disposeBag)
然后登录控制台是
Key is key0
Value is value0
Key is key1
Value is value1
Key is key3
Value is value3
Key is key2
Value is value2
推荐阅读
- node.js - 投入生产后,Angular 为 api 提供了错误的 URL
- php - Laravel - 捕获 404
- html - Bootstrap 共享 url 容器
- javascript - 如何检查一个对象是否至少有一个真值
- reactjs - 使用 switch case 渲染可重用的组件数据
- java - Java 中 Long 变量的 XOR 操作和 BitCount 返回 java.lang.NumberFormatException
- android - 保持图像下方的文本视图与 ConstraintLayout 中的图像宽度相同
- java - Java - javax.net.ssl.SSLHandshakeException:收到致命警报:handshake_failure
- php - 在计算操作之前在 php 中显示“文本”时出错
- filenames - DXL 获取 ole 对象名称