SwiftUI 從服務(wù)器獲取數(shù)據(jù)、存儲(chǔ)、緩存和顯示(json html)

看完本文您將能夠?qū)崿F(xiàn)下面效果

Jietu20200415-123827@2x.jpg
Jietu20200415-123726.gif

看完本文您將掌握的技能

  • 掌握測(cè)試API方法
  • 掌握從服務(wù)器獲取JSON或文本
  • 將JSON轉(zhuǎn)為struct類型
  • 將數(shù)據(jù)存儲(chǔ)到手機(jī)里面
  • 從手機(jī)里讀取存儲(chǔ)的數(shù)據(jù)

什么是API

API(Application Programming Interface,應(yīng)用程序接口)是一些預(yù)先定義的函數(shù),或指軟件系統(tǒng)不同組成部分銜接的約定。目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問原碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。

如何調(diào)用API

下面我們就以icanhazdadjoke網(wǎng)站的API接口為例,來演示一下如何通過API獲取數(shù)據(jù)。

icanhazdadjoke網(wǎng)站介紹

icanhazdadjoke.com是互聯(lián)網(wǎng)上最全的英語笑話平臺(tái)?,F(xiàn)在支持許多不同平臺(tái)的基礎(chǔ),以確保您無論身在何處都可以訪問所需的英文笑話

獲取方式

我們可以使用macOS系統(tǒng)里面自帶curl工具來進(jìn)行測(cè)試。
1、點(diǎn)擊“啟動(dòng)臺(tái)” 選擇“其他”


image.png

2、點(diǎn)擊“終端”


image.png

3、在終端中輸入獲取JSON文件方式


image.png

輸入命令

curl -H "Accept: application/json" https://icanhazdadjoke.com/

返回?cái)?shù)據(jù)

{
"id":"ClGY8xc2EBd",
"joke":"What do you give a sick lemon? Lemonaid.",
"status":200
}

上面就是標(biāo)準(zhǔn)的JSON文件,joke字段就是笑話文本。

4、獲取純文本的方式

curl -H "Accept: text/plain" https://icanhazdadjoke.com/

返回結(jié)果

Remember, the best angle to approach a problem from is the "try" angle

小節(jié)

本小節(jié),我們了解什么是API,并通過獲取英文笑話的demo體驗(yàn)了如何從服務(wù)器獲取數(shù)據(jù)。下面將進(jìn)入我們SwiftUI實(shí)戰(zhàn)部分,我們將使用SwiftUI來開發(fā)一個(gè)能夠獲取數(shù)據(jù)、解析數(shù)據(jù)和展示數(shù)據(jù)的app。

SwiftUI 制作個(gè)英文笑話App

1、制作個(gè)struct來存儲(chǔ)笑話

struct Joke: Codable,Identifiable{
    let id = UUID()
    var joke: String
    var status: Int
}

代碼解讀

  • Codable
    Codable是一種類型,該類型可以將自己存儲(chǔ)到文件和網(wǎng)絡(luò)等存儲(chǔ)介質(zhì)。Codable定義形式如下:
typealias Codable = Decodable & Encodable

Codable是Encodable和Decodable協(xié)議的類型別名。當(dāng)您將Codable用作類型或通用約束時(shí),它會(huì)與同時(shí)符合兩種協(xié)議的任何類型匹配。

  • Identifiable
    Identifiable是協(xié)議類型,實(shí)現(xiàn)該協(xié)議類型將具有唯一的標(biāo)識(shí)。通常我們需要在實(shí)現(xiàn)Identifiable類型中添加下面的代碼:
   let id = UUID()

2、請(qǐng)求笑話的函數(shù)

(1)請(qǐng)求純文本數(shù)據(jù)

還有 59% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
支付 ¥5.69 繼續(xù)閱讀

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容