XcodeのSwiftでBitFlyerの板情報をJSONデータで取得してみる
引き続きSwiftネタです。
今日は半日くらいハマり、諦めました。
何にハマっていたかというとSwiftでBitFlyerのBitcoinの板情報のJSONデータを取得するのをXcodeを使って試行錯誤していました。
PlayGround側では取得できるのですが、Swiftプロジェクトにしてアプリで実行すると結果が表示されないという状況に悩まされました。
一応記録としてアップしておきます。
以下のコードをXcodeのPlayGroundで実行するとBitFlyerの板情報がJSONで結果を返すのが表示されるかと思います。
import Foundation
let url:URL = URL(string: "https://api.bitflyer.jp/v1/ticker?product_code=BTC_JPY")!
let task = URLSession.shared.dataTask(with: url){ data, response, error in
if let error = error{
print(error.localizedDescription)
return
}
if let response = response as? HTTPURLResponse {
print("response.statusCode = \(response.statusCode)")
}
if let data = data {
if let jsonString = String(data: data, encoding: .utf8) {
print(jsonString)}
}
}
task.resume()
上記の事項結果は以下
response.statusCode = 200
{"product_code":"BTC_JPY","state":"RUNNING","timestamp":"2020-09-28T01:36:17.643","tick_id":13140700,"best_bid":1150953.0,"best_ask":1151265.0,"best_bid_size":0.5301,"best_ask_size":0.001,"total_bid_depth":1327.03743517,"total_ask_depth":1254.36630289,"market_bid_size":0.0,"market_ask_size":0.0,"ltp":1151299.0,"volume":77717.36953865,"volume_by_product":3564.54245527}
しかしながら、Swiftのプロジェクトにして、CUIアプリや、Windowsアプリケーションにしても、デバッグコンソールに結果が表示されない状態を確認しています。
Xcodeのバグなのでしょうか、PlayGroundでは動作するので、疑心暗鬼になりますね。
標準のJSONライブラリではないもので今後試してみようと思いますが、Xcode側のバグだとしたらiOSアプリの開発というものはなかなかモチベーションを維持するのが大変で痺れるものだと思いました。
開発者の苦労が身にしみますね。