- 原文地址:User Defaults in Swift
- 原文作者:Yafonia Hutabarat
- 译文出自:掘金翻译计划
- 本文永久链接:github.com/xitu/gold-m…
- 译者:chaingangway
- 校对者:chaingangway
所有 iOS 应用程序都具有内置的数据字典,在安装应用程序后,该字典可以存储少量用户设置的相关数据。这套机制叫做 UserDefault。
根据 Apple 的文档,UserDefaults 是用户默认数据库的接口,您可以对在程序启动期间的键值对进行持久化存储。
UserDefault 可以存储整数、布尔值、字符串数组、字典、日期和更多类型,但是不要保存太多数据,因为这会减慢程序的启动速度。
UserDefaults 就类似一个包含键值对的字典。例如:
var dict = [ "Name": "Yafonia", "Age" : 21, "Language": "Indonesian" ] 复制代码
User defaults 保存在 .plist
文件中,而在本例中我们保存在 Info.plist
文件里。
User Defaults 最好用来存储简单的数据片段。如果需要存储多个对象,你最好使用专业的数据库。下面是在 UserDefaults 存储简单数据片段的例子:
我们可以在 UserDefaults 存储多种变量类型:
Bool
类型、整数值用 Int
类型、单精度浮点数用 Float
类型、双精度浮点数用 Double
类型String
类型、二进制数据用 Data
类型、日期用 Date 类型、链接用 URL
类型Array
和 Dictionary
类型在 UserDefaults
的内部只能存储 NSData
、NSString
、NSNumber
、NSDate
、NSArray
和 NSDictionary
这些类型的数据。
例如,在这个项目中,我想保存几个帐户信息,例如电子邮件,代码,名称,令牌和 UserID。因此,我将 loginResponse 中的值设置为这些键 (Email、LawyerCode、LayererName、Token、UserID)的值。所有值都是字符串。
除了账户信息,还有一个叫做 "Token"
的 key,它用于校验登录信息。如果这个 key 有值,证明这个用户是登录的,反之亦然。你也可以使用标志位,比如命名一个叫做 "isLoggedIn"
的 boolean
值。
在 User Defaults 中获取数据就像保存数据一样简单。让我们看下面的例子。
在上面的页面中,我需要帐户名称(例如:lawyer_staging)和电子邮件(例如:lawyer_staging@justika.com),并以 "Email"
和 "LawyerName"
为键将其保存在 User Defaults 中。因此,这是我们要做的:
要显示帐户的名称和电子邮件,您只需将标签的文本设置为从 UserDefaults 获取的数据即可。是的,就是这么简单!
也许您一直在想,之前我没有使用标志来存储登录信息,那么当用户未登录时会怎样?
如果用户已注销,我们可以在 User Default 中重置键和值,如下:
当用户单击 “Keluar” 按钮时,我们重置 User Defaults 中所有的键和登录信息值。用户登录后,将在 User Defaults 中再次设置键和值。
如上所述,我们还可以在 User Defaults 中保存像界面语言这样的应用设置。例如,字体信息保存在 User Defaults 中。
在上图中,您可以看到有一个名为 “Fonts provided by application” 的键,这是我们保存字体的地方。
在本文中,我们轻松地使用 User Defaults 以字符串,布尔值,整数,数组,字典,日期等形式保存简单的数据,例如用户信息,应用设置和标志等等。
如果发现译文存在错误或其他需要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。