【问题标题】:Why is UserDefaults.init(suiteName:) a failable initializer?为什么 UserDefaults.init(suiteName:) 是一个可失败的初始化程序?
【发布时间】:2021-04-16 10:51:57
【问题描述】:

UserDefaults.init(suiteName:) 初始化程序是一个可失败的初始化程序。但是,文档 (here) 并没有具体说明在什么情况下它将返回 nil UserDefault 对象。

首先,什么情况下它会返回一个 nil UserDefault 对象?

其次,在 iPhone 和 iPad 应用程序的上下文中强制解包它是否安全?

【问题讨论】:

  • UserDefaults.globalDomain 用于suiteName,它似乎返回零值。在文档中,它说明这是一个无效的参数,作为捆绑包 ID,我猜传递捆绑包 ID 也可能会失败。
  • 完美。我在suiteName 参数描述中错过了这一点。现在重读了一遍,觉得很有道理。因此,如果我传入的值既不是我的应用程序的主包标识符也不是globalDomain,我想我可以假设我会得到一个非零UserDefaults 对象。

标签: swift userdefaults


【解决方案1】:

UserDefaults.init(suiteName:) 初始化程序将返回一个 nil UserDefaults 对象,如果它传递了应用程序的主包标识符或 globalDomain。如果您传入任何其他值,我猜您可以假设此初始化程序将返回非零 UserDefaults 对象。

(感谢@Larme 在我的问题下的评论。)

【讨论】:

    猜你喜欢
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2013-02-26
    • 1970-01-01
    • 2016-11-13
    相关资源
    最近更新 更多