archivedData(withRootObject:)/unarchiveObject(with:)が非推奨になったので直してみる

NSKeyedArchiver/NSKeyedUnArchiver(オブジェクトをファイルに保存するためにエンコードするクラス)のメソッドの中で、

archivedData(withRootObject:) / unarchiveObject(with:) がOS12以降でdeprecated(非推奨)になっているので修正してみました。

対応前のwarningがこちら

'archivedData(withRootObject:)' was deprecated in iOS 12.0: Use+archivedDataWithRootObject:requiringSecureCoding:error: instead

'unarchiveObject(with:)' was deprecated in iOS 12.0: Use +unarchivedObjectOfClass:fromData:error: instead

非推奨になっている時はこのようなwarningが出ます。

別にこのままでも現状動作に支障はないのですが、今後バグに繋がりかねないので早めに修正しておきまししょう。

推奨されているものに書き換える

それぞれを現在推奨されているものに書き換えてあげましょう。

archivedData(withRootObject:) -> archivedData(withRootObject:requiringSecureCoding:)

unarchiveObject(with:) -> unarchiveTopLevelObjectWithData(_:)

archivedDataを書き換える

修正前

let cookiesData = NSKeyedArchiver.archivedData(withRootObject: cookies)

修正後

guard let cookiesData = try? NSKeyedArchiver.archivedData(withRootObject: cookies, requiringSecureCoding: false) else { return }

unarchiveObjectを書き換える

修正前

let cookies = NSKeyedUnarchiver.unarchiveObject(with: cookiesData) as? [HTTPCookie]

修正後

let cookies = (try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(cookiesData)) as? [HTTPCookie]

これでエラーメッセージ消えた!

やったー(((o(*゚▽゚*)o)))

コメント

タイトルとURLをコピーしました