如何在 Swift 中处理 NSUserDefaults 中的非可选值

2024-04-26

从中获取值NSUserDefaults我会做这样的事情:

let userDefaults = NSUserDefaults.standardUserDefaults()
if let value = userDefaults.objectForKey(key) {
    print(value)
}

但是,这些方法不返回可选值:

  • boolForKey(默认为false如果没有设置)
  • integerForKey(默认为0如果没有设置)
  • floatForKey(默认为0.0如果没有设置)
  • doubleForKey(默认为0.0如果没有设置)

在我的应用程序中,我想使用保存的整数值(如果之前已设置)。如果之前没有设置,我想使用我自己的默认值。问题是0是我的应用程序的有效整数值,所以我无法知道是否0是之前保存的值,还是默认未设置的值。

我该如何处理这个问题?


您可以使用objectForKey(返回一个可选值)并使用as?可选择将其转换为Int.

if let myInteger = UserDefaults.standard.object(forKey: key) as? Int {
    print(myInteger)
} else {
    print("no value was set for this key")
}

解决方案Bool, Float, and Double会以同样的方式工作。

Note:

我建议采用已接受的答案并设置默认值,而不是在可能的情况下强制转换通用对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Swift 中处理 NSUserDefaults 中的非可选值 的相关文章

随机推荐

  • 如何在 Plotly 中旋转绘图的轴?

    我在 Plotly 中完成了以下情节 如您所见 X Y 轴采用传统方式 如何旋转轴 使 X 垂直绘制 Y 水平绘制 向左 我还想修改每个轴的范围和间距 我想它必须对布局元素做一些事情 我的代码到目前为止 layout go Layout t
  • 如何使用 OAuth 2.0 实现 Web 小部件

    我想创建一个 Web 小部件来显示我网站上的信息 该小部件将使用 JavaScript 包含在客户网站的 HTML 中 并且只能用于我的客户 在我的网站上注册的网站 小部件中的信息应该特定于当前正在访问客户站点的用户 因此 我需要对客户端
  • Paint.getTextWidths。什么是提前宽度?

    什么是提前宽度 该术语出现在 android 类中Paint 具体来说是函数getTextWidths 文档指出 返回字符串中字符的提前宽度 什么是 提前宽度 前进宽度是与字体 版式相关的度量术语 这里有一些关于 SO 的问答涵盖了它 但简
  • 在 BHO 中检测页面刷新

    页面刷新 F5 后 IE 不会触发 DocumentComplete 和 NavigateComplete2 事件 这显然是 设计使然 但它使得响应页面重新加载变得困难 哪些方法取得了最大的成功 有什么注意事项 谢谢 没有直接的方法 很难跨
  • 透明卡片,但具有仰角阴影效果

    我在制作透明白色卡片 不透明度 0 4 时遇到问题 但是 带有来自高程效果的阴影 如果我删除高程 则不会有阴影效果 并且卡片看起来是透明的 但是 如果我添加一些高度 透明效果就会被破坏 这是我尝试过的 Widget cardMenu Str
  • Visual Studio Code 不建议使用 Python 对象属性

    我使用添加了 Python 扩展的 VS Code v1 25 1 尽管它向我建议了库和类的属性和方法 即我输入from sklearn 它提出像这样的建议ensemble exception等等 当我生成 numpy 数组时x data
  • 如何从纯文本中查找键值存储中的值

    给定一个纯文本文件 其中包含 FOO foo BAR bar BAZ baz 我们如何grep使用键获取值 Use a 向后看 https regex101 com r q3FNpe 1 grep Po lt FOO w file foo
  • OpenCover 与 TFS 集成

    我是 TFS 新手 希望将 OpenCover 与 TFS 集成 如果有人这样做过 请帮忙 这个问题相当老了 但也许你仍然感兴趣 对于当前版本的 TFS 2015 Update 2 现在可以将其作为 vsts 扩展 详细信息请参见此处 ht
  • 如何使用唯一指针向量?

    I use vector
  • 如何将 URL 参数传递到 Wordpress 页面中的 iFrame?

    WordPress 3 2 1 我有一个页面 其中嵌入了外部页面的 iframe 即在 WP 页面中我有以下代码 我可以动态设置外部网站源吗 通过 URL 参数 假设上面的页面是http mysite com myiframe page h
  • AVMutableVideoComposition 内的交叉淡入淡出

    我已经成功地用多个视频剪辑组成了一个 AVMutableComposition 并且可以查看和导出它 并且我希望能够使用交叉淡入淡出在它们之间进行转换 所以我想使用 AVMutableVideoComposition 我找不到任何关于如何连
  • 同一活动的多个通知

    我有一个正在从通知栏打开的活动 但是当我这样做时NotificationManager notify 我给意图一个不同的捆绑 以便每个通知打开相同的活动 但从数据库中获取彼此的其他信息 但是 当我尝试输入任何通知 例如有 3 个通知 时 它
  • C/C++ 有哪些突变测试框架?

    突变测试 https secure wikimedia org wikipedia en wiki Mutation testing已经出现有一段时间了 似乎至少有一两个针对 C C 的商业突变测试框架 你用过它们吗 你有什么经历 有没有开
  • 根据 1 的数量查找数字的排名

    令 f k y 其中 k 是非负整数递增序列中的第 y 个数 其二进制表示形式中的 1 数量与 k 相同 例如f 0 1 f 1 1 f 2 2 f 3 1 f 4 3 f 5 2 f 6 3 等等 给定 k gt 0 计算 f k 我们很
  • Google App Engine 电子邮件进入垃圾邮件文件夹

    当我使用邮件的 send mail 函数通过谷歌应用程序引擎发送电子邮件时 它们通常会被放置在收件人的 SPAM 文件夹中 虽然 GMail 帐户不会出现此问题 但 Yahoo Mail 帐户 可能还有其他几个帐户 会出现此问题 有没有办法
  • 将 JavaScript 中的大字符串与哈希进行比较

    我有一个带有文本区域的表单 其中可以包含使用多个第三方富文本编辑器之一编辑的大量内容 例如博客文章 我正在尝试实现类似自动保存功能的功能 如果内容发生更改 它应该通过ajax 提交内容 然而 我必须解决这样一个事实 我作为选项的一些编辑器不
  • IIS7 和 HTTP 状态代码处理

    我因试图对 IIS7 集成模式 中的错误呈现进行完整的编程控制而感到非常头疼 我想要做的是给出一个错误 找不到页面 内部服务器错误 未经过身份验证等 将整个请求传输到自定义 ASPX 或 HTML 我更喜欢后者 并使用正确的 HTTP 状态
  • 通过json在textview中显示数据

    我想通过php显示mysql数据库中的用户详细信息并将其显示在android textview中 场景是这样的 当用户登录到他的帐户时 他将被重定向到包含 4 个按钮的仪表板 即 新闻源 个人资料 日历和关于 当用户单击个人资料按钮时 用户
  • Angular 9 ngtypecheck

    更新到 Angular 9 后 我收到警告 src main ngtypecheck ts is part of the TypeScript compilation but it s unused Add only entry point
  • 如何在 Swift 中处理 NSUserDefaults 中的非可选值

    从中获取值NSUserDefaults我会做这样的事情 let userDefaults NSUserDefaults standardUserDefaults if let value userDefaults objectForKey