為用戶創建沙盒時經常用到這樣的代碼:
let d = UserDefaults(suiteName: "Hesse")
此時 d
是 UserDefaults?
類型。那么,正如這篇文章標題所問的,d
何時為nil
呢?
通過文檔我們可以知道,當傳入的suiteName無效時,d
即為nil
了。suiteName無效的情況包括:
- 值與Bundle Identifier相同;
- 值為
UserDefaults.globalDomain
(rawValue是"NSGlobalDomain"
)。因為這個suiteName是系統保留的,所以不能使用。
print(UserDefaults.globalDomain) // NSGlobalDomain
除以上情況外,返回的UserDefaults
對象都是non-nil的。