arrays - 无法将 [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)
这行得通,但什么相当于BehaviorSubject
and PublishSubjuct
?
解决方案
尝试
self.parsedJSON.onNext(decodedJson.people)
推荐阅读
- visual-studio-code - Can I see, and individually disable, keyboard shortcuts for extensions, such as the Sublime Text Keymap extension?
- android - 使用 JSON 在 Google Maps API 中设置位置并保存最后一个已知位置
- php - 基于 IF 的 FOR 循环不插入多行 - PHP
- python - Gunicorn 不会安装到 virtualenv
- c# - 无法在 twilio 消息接收服务 c# 中接收正文
- amazon-web-services - 如何使用 Docker 映像通过 AWS 托管 SSL Rest API?
- ansible - 如何使用 Ansible 收集有关磁盘的事实
- java - 使用 Spring 框架的静态资源版本控制不起作用
- c# - DbQuery 返回空值
- sql - 连接表的行和具有相同字段名称的子查询