我如何在RxSwift中打印订阅的字典值?

问题描述 投票:0回答:1

我有一个返回Observabledictionary

func myFunc() -> Observable<[String : MyClass]> {
    return service.getDictionary()
}

如何获得keysvalues

viewModel.myFunc().subscribe(onNext: {
    print("🐱", $0 )
}).disposed(by: disposeBag)

[没有.key.value之类的属性。是否使用mapflatMap或它如何工作?

ios swift dictionary rx-swift
1个回答
1
投票

已测试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
© www.soinside.com 2019 - 2024. All rights reserved.