iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 15
0
Software Development

Swift 學習目標 -- 30 天送審第一支APP系列 第 15

DAY 15 : 使用 URLRequest 摳資料

昨天嘗試跟著教學影片做追蹤下載進度的漸進式圓環動畫,發現其實有許多 UI 元件及功能都還很陌生。

於是還(知識)債的時刻到了。
今天將會把主要用到的元件及功能 URLSession, CALayer, path...等, 一一拆解介紹。

當我們需要從網路 server 端下載資料到 APP 裡面時,可以使用 Swift 裡面的 URLSession(如下) 這個 Class 。基本上 URL Loading System 是一組使用標準網路通訊協定與資料端伺服器 (server) 溝通及載入資料的 Class。

    URLSession(configuration: URLSessionConfiguration, delegate: URLSessionDelegate?, delegateQueue: OperationQueue?)

這個 URLSession 裡面提供了一個 API 可以幫我們從 server 端摳資料到我們的 APP 裡面。
NSURLSession 被套用在 APP 裡面時, 便會透過 NSURLRequest 對 資料端伺服器 (server) 發出資料請求。
這個 URLSession 在 URL Session Programming Guide 裡頭有更詳盡的介紹。

當我們套用了 URLSession 以後,我們的 APP 便會啟動一個或更多個分別執行的資料轉換 session。

Swift 裡面提供了 URLSession 與 URLConnection 兩個方式可以讓我們傳送 URLRequest (從 server 抓取資料)。

    URLRequest(url: URL, cachePolicy: URLRequest.CachePolicy, timeoutInterval: TimeInterval)
    

以下是一個節錄自網路文章 URLRequest 的範例:


let urlString = URL(string: "https://developer.apple.com/documentation/foundation/nsurlrequest") //要摳資料的url
        if let url = urlString {
            let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
// 可以先忽略以下的程式碼
                
                if error != nil {
                    print(error)
                } else {
                    if let usableData = data {
                        print(usableData) //JSONSerialization
                    }
                }
            }
  //
    }

若是之前沒有使用過 URLRequest 的經驗,建議在閱讀時,先不要看 //之間的程式碼。
可以先把 dataTask(with: url) 看成一個 func ,之後的 { (data, response, error) ... } 為一個會回傳 (data, response, error) 這三個值的 closure 。

由於從 server 端拿到的資料會是 JSON 格式,所以 我們還需要用 Swift 本身的 JSONSerialization 來將他轉換成 Foundation 裡面支援的格式。 (PS: JSONSerialization 本身可支援 JSON 物件與 Foundation 物件兩方的互換。)


上一篇
DAY 14: animation 做出漸進圓形
下一篇
DAY 16 : APP 規劃
系列文
Swift 學習目標 -- 30 天送審第一支APP33

尚未有邦友留言

立即登入留言