あまのじゃくなHIKARU APPです。
毎日楽しく忙しくさせてもらい感謝、感謝の毎日です。
swift4.1からstruct + codableでJSONを簡単に扱えるようになり重宝しています。
そんな流れで、最近はstructばかり、
でも、長年使用してきたdictionaryとは違い、変化球を知らないことがわかった。
それなら、変化球を投げてみたい騒動に駆り立てられ、structからdictionaryやqueryパラメータに変換する方法を考えてみた。
それじゃ〜、いってみよう
環境
Xcode 11.3.1
StructからDictionary
struct SomeHow: Codable {
var a: String = "A"
var b: String = "B"
var nineteen: Int = 19
}
let somehow = SomeHow()
// struct to dictionary
let shMirror = Mirror(reflecting: somehow)
let shDic = shMirror.children.reduce([String: Any]()) { var varDict = $0; varDict[$1.label!] = $1.value; return varDict }
Struct から Query String
struct SomeHow: Codable {
var a: String = "A"
var b: String = "B"
var nineteen: Int = 19
}
let somehow = SomeHow()
// struct to query
let shMirror = Mirror(reflecting: somehow)
let shArray = shMirror.children.map{"\($0.label!)=\($0.value)"}
let shQueryString = shArray.joined(separator: "&")
Struct の var name
struct SomeHow: Codable {
var a: String = "A"
var b: String = "B"
var nineteen: Int = 19
}
let somehow = SomeHow()
let shMirror = Mirror(reflecting: somehow)
// struct var name
let shVarName = shMirror.children.map { $0.label! }
今回は、swift + structの三段活用をまとめてみた。
抑えるツボは、let shMirror = Mirror(reflecting: somehow) なところ。
まだまだ奥が深く知らないことばかり
swift 今日も楽しかったです。
日々修行


コメント