gpt4 book ai didi

JSONSerialization 到 SwiftyJSON

转载 作者:行者123 更新时间:2023-11-28 14:09:41 24 4
gpt4 key购买 nike

我正在尝试将 SwiftyJSON 与我的 JSON api 数据一起使用,但我无法理解转换的工作原理。

这是 SwiftyJSON Git 的链接:https://github.com/SwiftyJSON/SwiftyJSON

这是我当前的代码:

func newFilms() {

let apiKey = "12345"
let url = URL(string: "https://api.themoviedb.org/3/movie/now_playing?api_key=\(apiKey)&language=en-US&page=1")
let request = URLRequest(
url: url! as URL,
cachePolicy: URLRequest.CachePolicy.reloadIgnoringLocalCacheData,
timeoutInterval: 10 )

let session = URLSession (
configuration: URLSessionConfiguration.default,
delegate: nil,
delegateQueue: OperationQueue.main
)

let task = session.dataTask(with: request, completionHandler: { (dataOrNil, response, error) in
if let data = dataOrNil {
if let resposeDictionary = try! JSONSerialization.jsonObject(with: data, options:[]) as? [String: Any] {

self.films = (resposeDictionary["results"] as? [String: Any])!
print("response: \(resposeDictionary)")
}

}

self.filteredFilms = self.films
self.filmsCollection.reloadData()

})


task.resume()

}

这是新 SwiftyJSON 的示例:

let json = JSON(data: dataFromNetworking)
if let userName = json[0]["user"]["name"].string {
print("\(userName)")
//Now you got your value
}

我的主要问题是,data: datafromNetworking 会去哪里,我很困惑应该实现原始代码的哪一部分以及如何将其用于新版本。

最佳答案

dataFromNetworking 表示从 dataTask 返回的 data 对象。 SwiftyJSON 进行反序列化。

替换

if let data = dataOrNil {
if let resposeDictionary = try! JSONSerialization.jsonObject(with: data, options:[]) as? [String: Any] {

self.films = (resposeDictionary["results"] as? [String: Any])!
print("response: \(resposeDictionary)")
}
}

if let data = dataOrNil {
do {
let json = try JSON(data: data)
self.films = json["results"].dictionaryValue
} catch { print(error) }
}

但是在 Swift 4 中 SwiftyJSON 被强大的内置 Codable 协议(protocol)取代

关于JSONSerialization 到 SwiftyJSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52706439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com