首页 > 解决方案 > 无法将 [Employees] 类型的值分配给类型 'PublishSubject<[Employees]>

问题描述

我已经成功parsed json使用数据URLSession,现在我想将parsed数据添加到array. 使用普通的方法可以正常array工作,但我正在学习Rx,因此想使用subject.

所以,这有效:

var parsedJson = [Employees]()
self.parsedJson = decodedJson.people

但这给出了一个错误:

var parsedJson: PublishSubject<[Employees]> = PublishSubject<[Employees]>()
self.parsedJson = decodedJson.people

无法将类型“[Employees]”的值分配给类型“PublishSubject<[Employees]>”

这是URLSession代码:

//    var parsedJson = [Employees]()
    var parsedJson: PublishSubject<[Employees]> = PublishSubject<[Employees]>()


    func getJSON(completion: @escaping () -> Void) {
        guard let url = URL(string:"https://api.myjson.com/bins/jmos6") else { return }

        URLSession.shared.dataTask(with: url) { data, response, error in
            guard let data = data else { return }

            do {
                let jsonDecoder = JSONDecoder()
                jsonDecoder.keyDecodingStrategy = .convertFromSnakeCase
                jsonDecoder.dateDecodingStrategy = .iso8601

                let decodedJson = try jsonDecoder.decode(People.self, from: data)
                self.parsedJson = decodedJson.people
                completion()
            } catch {
                print(error)
            }
        }.resume()
    }

任何人都知道如何做到这一点以及为什么首先会出现错误?不是<>简单地指出type应该是observed哪个吗?也没有.accept()上班。

编辑

let parsedJson: BehaviorRelay<[Employees]> = BehaviorRelay(value: [])
self.parsedJson.accept(decodedJson.people)

这行得通,但什么相当于BehaviorSubjectand PublishSubjuct

标签: arraysswiftrx-swifturlsession

解决方案


尝试

self.parsedJSON.onNext(decodedJson.people)

推荐阅读