Swift 程式語言

Swift 程式庫系列之三:Alamofire, SwiftyJSON, Kingfisher, KeychainAccess 以及 NVActivityIndicatorView

Swift 程式庫系列之三:Alamofire, SwiftyJSON, Kingfisher, KeychainAccess 以及 NVActivityIndicatorView
Swift 程式庫系列之三:Alamofire, SwiftyJSON, Kingfisher, KeychainAccess 以及 NVActivityIndicatorView
In: Swift 程式語言

各位 iOS 開發者們,不曉得這幾篇以來的程式庫如何呢?希望我們所介紹的程式庫能對你有所幫助。這週也將繼續介紹我們所挑選的幾個 Swift 程式庫,希望能幫助你在 iOS App 開發的道路上披荊斬棘。

提示:你可以使用CocoaPods安裝這些程式庫到你的Xcode項目,如不懂使用CocoaPods,可以參考這篇教學文章

1. Alamofire

網路資料的傳輸是 App 一個重要的功能,幾乎是每位 iOS 開發者都會碰到的課題。雖然我們可以使用 iOS 原生的 URLSession 等來處理這些事情,但如果有個程式庫可以幫助我們更快的完成這樣任務,那就在好不過了。

相信過往寫過 Objective-c 的開發者們對於 AFNetworking 這套程式庫不陌生。這是套供 Objective-c 使用的網路程式庫。而開發團隊則為 Swift 製作了 Alamofire 這套專用於 Swift 上網路傳輸處理的程式庫。

而我們該如何使用呢?我們以取得行政院環境保護署的空氣品質污染指標 Open Data 為例。在安裝好程式庫後,先引用Alamofire

import Alamofire

接著只要加入以下幾行程式碼:

let url = "http://opendata.epa.gov.tw/ws/Data/REWXQA/?$orderby=SiteName&$skip=0&$top=1000&format=json"
Alamofire.request(url).responseJSON { response in
    //避免取得的資料為nil
    if let json = response.result.value {
        //取得台灣各地觀測站的空氣品質指標
        print("json: \(json)")
    }
}

只要簡短的步驟就可以取得網路資料,是不是很方便呢? 以上所講述的僅是基本使用方式,如果想要了解 Alamofire 更詳盡的使用方法,可以參閱 Appcoda 上的這篇教學文章

程式庫網址/圖片來源:
https://github.com/Alamofire/Alamofire

2. SwiftyJSON

SwiftyJSON 是一個十分有名專門處裡 JSON 物件的程式庫。由於 Swift 程式語言特性的關係,使用原生的方式處裡 JOSN 物件顯得繁雜。如果要安全的取得資料,你可能要:

if let dataArray = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]]{
    if let data = dataArray[0]["data"] as? [String: Any]{
        if let content = data["content"] as? String{
            print(content)
        }
    }
}

如此多的步驟。而使用 SwiftyJSON 後,你可以將之簡化。以下是其中一個使用例子:

import SwiftyJSON

let json = JSON(data: data)
if let content = json["data"][content].string{
    print(content)
}

很明顯,對於開發上可以增加效率。另外,SwiftyJSON 也提供了與 Alamofire 的支援,結合這兩個程式庫便可以打造一個網路應用 App。

程式庫網址:
https://github.com/SwiftyJSON/SwiftyJSON

3. Kingfisher

從網路上下載圖片到 App 顯示一直都是網路應用 App 中一個重要的功能項目。但有可能因為圖片重複下載而造成使用者流量問題或是網路環境不佳而發生些「意外」,於是善用快取(cache)的方式將圖片保留在記憶體或是儲存空間中便是一種解決之道。但對於一些開發者來說快取的應用並不那麼上手,好在有 Kingfisher 幫忙解決這樣問題。

當安裝好之後,先引入Kingfisher

import Kingfisher

接著只要加上幾段程式碼:

let url = URL(string: "http://example.com/image.png")
imageView.kf.setImage(with: url)

Kingfisher 就會從網址下載圖片顯示,同時暫存於記憶體快取及硬碟快取之中,當這張圖需要在此顯示時就會從快取中取出而不會重新下載。

程式庫網址/圖片來源:
https://github.com/onevcat/Kingfisher

4. KeychainAccess

Keychain 是 Apple 為 Mac/iOS 所設計保護資料的方式,藉由將資料存放於 Keychain 中增加隱私資料的安全性。KeychainAccess 便是一套讓開發者能夠方便使用 Keychain 的程式庫。

當安裝好 KeychainAccess 之後,和使用其他第三方程式庫一樣,要先加入import

import KeychainAccess

接著只要兩步驟 ,就可以將資料存入 Keychain 中:

let keychain = Keychain(service: "com.example.appcoda")
keychain["password"] = "password"

而要取出使用時也只需用以下程式碼就可以了:

let password = keychain["password"]
print(password)

是不是十分方便呢?

程式庫網址
https://github.com/kishikawakatsumi/KeychainAccess

5. NVActivityIndicatorView

有時候我們會使用 UIActivityIndicatorView 作為提示使用者目前正在進行讀取動作,不過 iOS 原生提供的 UIActivityIndicatorView 只有一種樣式,如果我們想要有不同的樣式那就必須要自行設計製作。

現在, NVActivityIndicatorView 或許可以幫助你解決這個問題。 NVActivityIndicatorView 提供了多種樣式的 UIActivityIndicatorView,你可以任意的選擇使用為你的 App 增添不一樣的設計。

而 NVActivityIndicatorView 該如何使用呢?只要在安裝完程式庫之後,先引入相關的程式庫:

import NVActivityIndicatorView

接著建立 NVActivityIndicatorView,就像以下例子:

// 初始建立 NVActivityIndicatorView
let activityView = NVActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 80, height: 80), type: .ballClipRotatePulse, color: .white)
activityView.center = self.view.center

// 啟動 NVActivityIndicatorView 動畫
activityView.startAnimating()

self.view.addSubview(activityView)

就可以達到如下圖的效果:

nvactivityview-sample

你也可以試試不同的樣式,為自己的 App 找到最適合的 ActivityIndicatorView。

程式庫網址
https://github.com/ninjaprox/NVActivityIndicatorView

如對以上程式庫或我們這個Swift程式庫系列有任何意見,歡迎留言討論。

作者
楊 敦凱
目前於科技公司擔任 iOS Developer,工作之餘開發自有 iOS App同時關注網路上有趣的新玩意、話題及科技資訊。平時的興趣則是與自身專業無關的歷史、地理、棒球。來信請寄到:[email protected]
評論
很好! 你已成功註冊。
歡迎回來! 你已成功登入。
你已成功訂閱 AppCoda 中文版 電子報。
你的連結已失效。
成功! 請檢查你的電子郵件以獲取用於登入的連結。
好! 你的付費資料已更新。
你的付費方式並未更新。