WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
iOS
Swift
システム開発
ひとくちコードスニペット
[Swift]UIBezierPathをbase64エンコード・デコードするコードスニペット

こんにちは、株式会社MIXシステム開発担当のBloomです。
今回はSwiftでUIBezierPathを一旦base64文字列へエンコードし、またデコードするコードスニペットを掲載させていただきます。
extension UIBezierPath {
func toBase64() throws -> String {
let data = try NSKeyedArchiver.archivedData(withRootObject: self, requiringSecureCoding: true)
return data.base64EncodedString()
}
static func fromBase64(_ string: String) throws -> UIBezierPath {
guard let data = Data(base64Encoded: string) else { throw NSError() }
guard let path = try NSKeyedUnarchiver.unarchivedObject(ofClass: UIBezierPath.self, from: data) else {
throw NSError()
}
return path
}
}使用例
override func viewDidLoad() {
super.viewDidLoad()
let p = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: 120, height: 60), cornerRadius: 8)
do {
let b64 = try p.toBase64()
let r = try UIBezierPath.fromBase64(b64)
let b1 = p.cgPath.boundingBoxOfPath
let b2 = r.cgPath.boundingBoxOfPath
print("bbox equal:", b1.equalTo(b2))
} catch {
print("error:", error.localizedDescription)
}
}この使用例では一度作ったPathをエンコードし、またデコードしたPathと前後を比較して合致していることを確認しています。
これでUIBezierPathを簡単に保存できるようになりました。良かったですね。