SwiftUI 百度AI开放平台教程之 01 获取API ac

2021-09-04  本文已影响0人  iCloudEnd

实战需求

SwiftUI 百度AI开放平台教程之 01 获取API access_token 基于SwiftJSON

本文价值与收获

看完本文后,您将能够作出下面的界面

SwiftUI 百度AI开放平台教程之 01 获取API access_token 基于SwiftJSON

看完本文您将掌握的技能


基础开源库

为什么Swift中的典型JSON处理不好?

Swift对类型非常严格。但是,尽管显式打字有利于让我们免受错误的影响,但在处理JSON和其他本质上隐含类型的区域时,它会变得痛苦。

以Twitter API为例。假设我们想在Swift中检索一些推文的用户“名称”值(根据Twitter的API)。

代码如下所示:

if let statusesArray = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]],
    let user = statusesArray[0]["user"] as? [String: Any],
    let username = user["name"] as? String {
    // Finally we got the username
}

这不好。

即使我们使用可选的链条,也会很混乱:

if let JSONObject = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]],
    let username = (JSONObject[0]["user"] as? [String: Any])?["name"] as? String {
        // There's our username
}

无法辨认的混乱——对于一些真正简单的事情来说!

使用SwiftyJSON,您只需:

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

别担心可选包装的事情。这是自动为您完成的。

let json = JSON(data: dataFromNetworking)
let result = json[999999]["wrong_key"]["wrong_name"]
if let userName = result.string {
    //Calm down, take it easy, the ".string" property still produces the correct Optional String type with safety
} else {
    //Print the error
    print(result.error)
}

实战代码

1、主界面

上一篇下一篇

猜你喜欢

热点阅读