研究使用某個第三方套件 1. 如何使用 2. 研究它的程式碼

使用第三方套件Alamofire & SwiftyJSON 解析Json資料

  1. 如何使用

安裝cocopads的流程相信各位可以在google找到,這邊單純介紹如何將第三方套件安裝在自己的專案

第一步:打開終端機將路徑切換至專案目錄下 (我的專案名字是aJson)

ls代表目前清單; cd則是進入某個資料夾,aJson我放在桌面,所以到桌面開啟

到了aJson資料夾後,輸入pod init

接著打開aJson資料夾,會看到裡面多了一個Podfile資料夾

到apple store下載TextWrangler

打開TextWrangler

輸入這兩行,然後存檔

為什麼要輸入這兩行,是因為是根據Alamofire & SwiftyJson規定,詳細可以參考以下

接著回到終端機並輸入pod install (因為我已經安裝了所以沒辦法po圖)

打開原專案(勿打開xcodeproj),要開xcworkspace

進入專案後,把剛才安裝的檔案import

import Alamofire
import SwiftyJSON

2. 研究它的程式碼

import UIKit
import Alamofire
import SwiftyJSON
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var json:JSON = JSON.null
var urlSession = URLSession(configuration: .default)
@IBOutlet weak var myTableView: UITableView!
var pokamon = [[String:Any]]()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return pokamon.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: “cell”, for: indexPath) as! TableViewCell
var dict = pokamon[indexPath.row]
//解析資料用cell裡的元件秀出
cell.nameLbl.text = dict[“name”] as? String
cell.typesLbl.text = (dict[“types”] as? [String])?.first as? String
cell.hpLbl.text = dict[“hp”] as? String
cell.subtypeLbl.text = dict[“subtype”] as? String
//解析image
if let image = URL(string: dict[“imageUrl”] as! String){
let task = urlSession.downloadTask(with: image) { (url, repsponse, error) in
if error != nil{
print(“sorry”)
return
}
if let okURL = url{
do{
let downloadImage = UIImage(data: try Data(contentsOf: okURL))
DispatchQueue.main.async {
cell.myImage.image = downloadImage
}
}catch{
print(“error”)
}
}
}
task.resume()
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 224
}
override func viewDidLoad() {
super.viewDidLoad()
myTableView.delegate = self
myTableView.dataSource = self
//Alamofire程式碼,搭配responseJSON解析
Alamofire.request(“https://api.pokemontcg.io/v1/cards").responseJSON(completionHandler: { response in
if response.result.isSuccess {
let json:JSON = try! JSON(data: response.data!)
let swiftyJsonVar = JSON(response.result.value!)
if let resData = swiftyJsonVar[“cards”].arrayObject{
self.pokamon = resData as! [[String:AnyObject]]
}
if self.pokamon.count > 0{
self.myTableView.reloadData()
}
} else {
print(“error: \(response.error)”)
}
})
}
}

附上成品 Pokeman