あまのじゃくな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 今日も楽しかったです。
日々修行
コメント