XCODE API – SwiftyJson, Alamofire, iOS-Chart の初期化、活用情報

SwiftyJson

JSONデータのパースライブラリです。

CocoapodsのPodfileのメタ情報は

platform :ios, ‘OSバージョン’
use_frameworks! target ‘アプリ名’ do
pod ‘SwiftyJSON’
end

そしてターミナルから

$ pod install

Swiftファイル上での初期化は

import SwiftyJSON

let json = JSON(data: dataFromNetworking)

let json = JSON(jsonObject)

if let dataFromString = jsonString.data(using: .utf8, allowLossyConversion: false) {
let json = JSON(data: dataFromString)
}

となり、JSONデータのアサイン例は

// doubleをアレイから取得
let name = json[0].double

// stringをマルチアレイから取得
let name = json[1][“list”][2][“name”].string

// JSON Dictionaryからstringを取得
let name = json[“name”].stringValue

// Loopの場合
for (index,subJson):(String, JSON) in json {
//何か実行
}

//エラーの場合、アプトプット
let json = JSON([“name”, “age”])
if let name = json[999].string {
//何か実行
} else {
print(json[999].error) // “Array[999] is out of bounds”
}

詳細は https://github.com/SwiftyJSON/SwiftyJSON


Alamorefire

HTTPデータ通信のライブラリです。

CocoapodsのPodfileのメタ情報は

platform :ios, ‘OSバージョン’
use_frameworks! target ‘アプリ名’ do
pod ‘Alamofire’
end

そしてターミナルから

$ pod install Swift

フィル上での初期化は

import Alamofire

Alamofireを使ってJSONファイルをダウンロードそしてパースする

Alamofire.request(“URL文字列”).responseJSON { response in

print(response.request) // URLリクエスト
print(response.response) // HTTP URLレスポンス
print(response.data) // サーバデータ
print(response.result) // ダウンロードの結果 Sucess/Failure if let JSON = response.result.value {
print(“JSON: \(JSON)”)
}

ファイルをダウンロードするには

Alamofire.download(URL文字列, to: destination)
.response { response in
let filepath: String = (response.destinationURL?.path)!
 // テキストは、UTF8にエンコードする
self.TextView.text = try? String(contentsOfFile:(response.destinationURL?.path)!, encoding: String.Encoding.utf8)

// 既に同名のファイルが端末に存在すると(2回目のダウンロードから必ず発生)エラーが発生するので、一旦ファイルを消してからサーバからダウンロードする
if FileManager.default.fileExists(atPath: (response.destinationURL?.path)!) {
do{
try FileManager.default.removeItem(atPath: (response.destinationURL?.path)!) // 前に残ったファイルを削除
}catch{
print(“Handle Exception”)
}
}
}

詳細は https://github.com/Alamofire/Alamofire

iOS-Chart

iOS-Chartは人気グラフィックライブラリーなのですが、マニュアルがないのがネック。試行錯誤したなかの情報も含めて共有します。

CocoapodsのPodfileのメタ情報は


platform :ios, ‘OSバージョン’
use_frameworks! target ‘アプリ名’ do
pod ‘Charts’
end

そしてターミナルから

$ pod install

バーチャート作成のコードサンプルは

let y2Vals: [Double] = [ 900, 800, 1000, 500, 800, 900, 300, 400, 100, 1200, 500, 100]
xduration= [“Jan”, “Feb”, “Mar”, “Apr”, “May”, “Jun”, “Jul”, “Aug”, “Sep”, “Oct”, “Nov”, “Dec”]

var entries2 = [BarChartDataEntry]()

for (i, v) in y2Vals.enumerated() {
let entry = BarChartDataEntry()
entry.x = Double(i)
entry.y = v
entry.data = xduration as AnyObject //x軸に文字列を指定する場合
entries2.append(entry)
}

let set2 = BarChartDataSet(values: entries2, label: “2016”)
set2.setColor(UIColor.flatSkyBlue)

// チャートのスタイルの設定

BarChartView.xAxis.labelPosition = .bottom
BarChartView.drawValueAboveBarEnabled = true
BarChartView.xAxis.drawGridLinesEnabled = false
BarChartView.leftAxis.drawGridLinesEnabled = true
BarChartView.rightAxis.drawGridLinesEnabled = false
BarChartView.leftAxis.drawLabelsEnabled = true
BarChartView.rightAxis.drawLabelsEnabled = false

// チャートの間隔の調整

let data = BarChartData(dataSets: dataSets) let groupSpace = 0.25
let barSpace = 0.0
let barWidth = 0.3
let groupCount = self.xdurationtype.count
let startYear = 0

data.barWidth = barWidth;
BarChartView.xAxis.axisMinimum = Double(startYear)
let gg = data.groupWidth(groupSpace: groupSpace, barSpace: barSpace)
BarChartView.xAxis.axisMaximum = Double(startYear) + gg * Double(groupCount)
data.groupBars(fromX: Double(startYear), groupSpace: groupSpace, barSpace: barSpace)
BarChartView.notifyDataSetChanged()

// グラフ上のデータを非表示

let chartData = BarChartData()
chartData.addDataSet(set)
chartData.setDrawValues(false)

// オリエンテーション、デバイスタイプによりDescriptionの位置を変更

switch UIDevice.current.userInterfaceIdiom { // Detect Device Type and Orientation for Description location

case .phone:
if UIDevice.current.orientation.isLandscape {
self.MyChartView.chartDescription?.position = CGPoint(x: 適切な数値を設定, y: 0)
} else {
self.BarChartView.chartDescription?.position = CGPoint(x: 適切な数値を設定, y: 0)
}
case .pad:
if UIDevice.current.orientation.isLandscape {
self.MyChartView.chartDescription?.position = CGPoint(x: 適切な数値を設定, y: 0)
} else {
self.MyChartView.chartDescription?.position = CGPoint(x: 適切な数値を設定, y: 0)
}
default:
if UIDevice.current.orientation.isLandscape {
self.MyChartView.chartDescription?.position = CGPoint(x: 適切な数値を設定, y: 0)
} else {
self.MyChartView.chartDescription?.position = CGPoint(x: 適切な数値を設定, y: 0)
}
}

詳しくは https://github.com/danielgindi/Charts