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)))
コメント