環境
Xcode 10.3
使ったフレームワーク
-
MessagePack.swift
- たくさんフレームワークがある中で、これが最もメンテナンスされていた。一番速いらしい
-
MessagePacker
-
Codable
に対応しているフレームワーク
-
どちらもフレームワークのファイルが MessagePack.framework
になっていてややこしい。。
導入
どちらもCocoaPodsで導入可能
target 'HogeApp' do
use_frameworks!
pod 'MessagePack.swift', '~> 3.0'
pod 'MessagePacker'
end
その後 pod install
で導入。
MessagePack.swift
の使い方
本記事ではunpackする例のみを例示。
key value store 的なデータをunpackする場合。
import MessagePack
do {
var configs: [String:String] = [:]
let unpacked = try unpack(data)
if let ary = unpacked.value.arrayValue {
for map in ary {
if let dics = map.dictionaryValue {
if let k = dics["key"]?.stringValue, let v = dics["value"]?.stringValue {
configs[k] = v
}
}
}
}
} catch let error {
print(error)
}
個別に値を割り当てていく必要があるのが難点。
MessagePacker
の使い方
本記事ではunpackする例のみを例示。
適当なコンテンツをunpackしてみる。
Content.swift
struct Content: Codable {
var title: String?
var desc: String?
var iconURL: URL?
var isMain: Bool?
enum CodingKeys: String, CodingKey {
case title
case desc
case iconURL = "icon_url"
case isMain = "is_main"
}
}
型がある場合はとてもシンプルにデコードできる。
import MessagePacker
let content = try! MessagePackDecoder().decode(Content.self, from: data)
専用の型を作らないといけないのが難点。