Я успешно 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
и PublishSubjuct
?