Swift - UserDefaults何时为nil?

为用户创建沙盒时经常用到这样的代码:
let d = UserDefaults(suiteName: "Hesse")
此时 dUserDefaults? 类型。那么,正如这篇文章标题所问的,d何时为nil呢?

通过文档我们可以知道,当传入的suiteName无效时,d即为nil了。suiteName无效的情况包括:

  1. 值与Bundle Identifier相同;
  2. 值为UserDefaults.globalDomain(rawValue是"NSGlobalDomain")。因为这个suiteName是系统保留的,所以不能使用。
print(UserDefaults.globalDomain)    // NSGlobalDomain

除以上情况外,返回的UserDefaults对象都是non-nil的。

推荐阅读更多精彩内容