1
同じ親クラス(User)から継承する2つのクラス(クライアント、管理者)があります。Swiftの直列化オブジェクトのデータ型を確認
これらの3つのクラスはNSCodingプロトコルを実装しているため、userdefaultsにDataとして格納できます。
私のアプリケーションが起動すると、格納されているデータをSwift オブジェクトにデシリアライズする必要があります。
保存されたデータがどのタイプに属しているかを知る方法はありますか?このような
何か:
let data = defaults.object(forKey: "loggedInUser") as? Data
if data is Client
let client = NSKeyedUnarchiver.unarchiveObject(with: data) as? Client
if data is Admin
let admin = NSKeyedUnarchiver.unarchiveObject(with: data) as? Admin
なぜoptionalsを確認することができますか? 'obj'がチェックをパスすると、このタイプは100%で、安全にアンラップできます。 – vadian
これは私にとってうまくいった。 – ansanes
これは私が意味するものではありません。このコードは 'String'や' URL'の初期化子ではありません。 'objがClient'の場合は' nil'でないことが保証されていますので、 'let client = obj as! 'を安全に書くことができます。クライアント ' – vadian