私を助けてください!ループで立ち往生し、自分の道を見つけることができません。私はIOS仕事のためのプログラミングを学びたいので、私は彼らのチュートリアルアプリ、食事リストアプリケーションから始めようと思いました。私はあなたが永続的なデータの保存を開始することになっているところにいますエディターでループが止まることはありません。コード行があります...
let isSuccessfulSave = NSKeyedArchiver.archiveRootObject(meals, toFile: Meal.ArchiveURL.path)
それは私に言う警告を与えます...
'archiveRootObject(_:toFile :)'はiOS 12.0で廃止されました:代わりに+ archivedDataWithRootObject:requiringSecureCoding:error:を使用してください
OK、コード行を次のように変更します...
let isSuccessfulSave = NSKeyedArchiver.archivedDataWithRootObject(meals)
それから私に警告を与えます...
「archivedDataWithRootObject」は「archivedData(withRootObject :)」に名前が変更されました
OK、コード行を次のように変更します...
let isSuccessfulSave = NSKeyedArchiver.archivedData(withRootObject: meals)
これは...
'archivedData(withRootObject :)'はiOS 12.0で廃止されました:代わりに+ archivedDataWithRootObject:requiringSecureCoding:error:を使用してください
OK ...だから... archivedDataは非推奨であり、archivedDataWithRootObjectを使用する必要がありますが、archivedDataWithRootObjectの使用はarchivedDataに名前が変更されましたが、archivedDataは非推奨なので、archivedDataに名前が変更されたarchivedDataを使用してください。
私は開発者ドキュメントを調べてみましたが、同じことを教えてくれます。1つは廃止されており、リンクや何もありません。googleを検索すると、それらのいずれかを使用する構文を示す一連のページが表示されます。私はまだIOSプログラミングにまだ慣れておらず、非推奨のこの無限ループから、名前を変更して非推奨に変更する方法...
助けてください、私は道に迷ってしまい、続行する方法がわかりません。ありがとうございました。
IOS 12の一般的なソリューションは次のとおりです。
class SettingsArchiver {
static func setData(_ value: Any, key: String) {
let ud = UserDefaults.standard
let archivedPool = try? NSKeyedArchiver.archivedData(withRootObject: value, requiringSecureCoding: true)
ud.set(archivedPool, forKey: key)
}
static func getData<T>(key: String) -> T? {
let ud = UserDefaults.standard
if let val = ud.value(forKey: key) as? Data,
let obj = try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(val) as? T {
return obj
}
return nil
}
}