変数をUserDefaults
から初期化したい場合は、String?
を返し、nil
の場合は値を作成して割り当てます。オプションの場合は省略可能な変数を初期化する最良の方法
次のコードは動作しますが、私はそれがString
(それはこの段階ではnil
することはできませんので)になりたいしながら、最後に、私のobj
はString?
です。
var obj = UserDefaults.standard.string(forKey: "my_key")// Here, obj is a String?
if obj == nil {
obj = ProcessInfo.processInfo.globallyUniqueString// Returns, a String
defaults.set(obj, forKey: "my_key")
defaults.synchronize()
}
// Here, obj is still a String?
このような状況では、優れたパターン/ベストプラクティスはありますか?
FYI - [ 'synchronize'を呼び出す必要]がありません(https://stackoverflow.com/questions/40808072/when- and-why-should-you-use-nsuserdefaultss-synchronize-method)を実行します。 – rmaddy