【发布时间】:2019-12-19 12:58:04
【问题描述】:
我正在尝试学习RxSwift,目前我正在尝试将它与AlamoFire和SwiftyJSON相关联,即观察何时下载JSON,以便我可以@987654325 @ 它。我有获取JSON的工作代码:
guard let myURL = URL(string: "https://api.myjson.com/bins/e5gjk") else { return }
var myArray = [People]()
let myObserver = Observable.from(myArray)
Alamofire.request(myURL, method: .get)
.validate()
.responseJSON{ response in
guard response.result.isSuccess else {
print("Error")
return
}
let json = JSON(response.result.value)
for i in 0...json["employees"].count {
let people = People()
people.name = json["employees"][i]["firstName"].stringValue
people.job = json["employees"][i]["job"].stringValue
myArray.append(people)
}
for i in myArray {
print(i.name)
print(i.job)
}
}
myObserver.subscribe(onNext: {
print($0)
}, onError: { error in
print(error)
}, onCompleted: {
print("completed")
}, onDisposed: {
print("disposed")
}).disposed(by: DisposeBag())
如您所见,我也解析了JSON。我猜RX 的重点是在解析后使用onNext 中的数据,对吗?还是我误解了它的目的?
无论如何,我在myArray 上有一个观察者:let myObserver = Observable.from(myArray)。在我看来,subscribeonNext 应该在 myArray 获取数据后立即触发,但这并没有发生。发生的情况是completed 立即运行,然后JSON 网络和解析发生。 myArray 获取新数据时不会触发订阅。我是否遗漏了什么或误解了RX 的目的?
编辑
或者等等,整个JSON 处理和解析应该在onNext 中吗?
【问题讨论】:
标签: swift alamofire rx-swift swifty-json