如何在 Swift 应用中保存本地数据?
在 Swift 中,有多种方法可以在应用中保存本地数据,具体取决于您要保存的数据类型和大小。您可以使用用户默认值、属性列表序列化、Core Data 等。本文将通过一些示例了解用户默认值。
用户默认值
在 iOS、macOS 和 watchOS 中,一种称为 UserDefaults 的基本存储机制使应用能够存储相对少量的数据,包括用户偏好设置。您可以为所使用的键值对系统中的特定键分配一个值。然后,可以使用该键作为引用来获取该值。
简单数据类型(例如文本、布尔值、整数和日期)通常存储在用户默认值中。它使用简单,无需其他框架或库。
以下是 UserDefaults 的一些主要特点
数据持久性 − 即使应用关闭或设备重启,UserDefaults 数据仍然可以访问。
简单的 API − 易于使用,按键设置和获取值非常简单。
快速 − UserDefaults 非常适合处理少量数据,因为它专为快速读写而构建。
安全性 − UserDefaults 数据安全地保存在应用的沙盒中,这意味着只有生成它的程序才能访问它。
以下是 Swift 中更多 UserDefaults 使用示例−
示例 1:保存和检索布尔值
import Foundation // 为键"isDarkModeEnabled"设置布尔值 let defaults = UserDefaults.standard defaults.set(true, forKey: "isDarkModeEnabled") // 检索键"isDarkModeEnabled"的布尔值 let isDarkModeEnabled = defaults.bool(forKey: "isDarkModeEnabled") print(isDarkModeEnabled)
输出
true
此示例演示如何使用 set 方法和键"isDarkModeEnabled"将布尔值保存到 UserDefaults。然后,它使用 bool 方法和相同的键检索布尔值。最后,打印出检索到的布尔值。
示例 2:保存和检索字符串数组
import Foundation // 为键"myArray"设置一个字符串数组 let defaults = UserDefaults.standard defaults.set(["Apple", "Banana", "Orange"], forKey: "myArray") // 为键"myArray"检索字符串数组 let myArray = defaults.array(forKey: "myArray") as? [String] ?? [] print(myArray)
输出
["Apple", "Banana", "Orange"]
此示例演示如何使用 set 方法和键"myArray"将字符串数组保存到 UserDefaults。然后,它使用 array 方法和相同的键检索该数组,并将其转换为字符串数组。如果转换由于某种原因失败,它将默认为空数组。最后,它打印出检索到的数组。
Example 3: Saving and Retrieving an Integer
import Foundation // 为键"myInt"设置一个整数值 let defaults = UserDefaults.standard defaults.set(42, forKey: "myInt") // 检索键"myInt"的整数值 let myInt = defaults.integer(forKey: "myInt") print(myInt)
输出
42
此示例演示如何使用 set 方法和键"myInt"将整数值保存到 UserDefaults。然后,它使用整数方法和相同的键检索该整数值。最后,打印出检索到的整数值。
示例 4:保存和检索字典
import Foundation // 为键"myDictionary"设置字典 let defaults = UserDefaults.standard defaults.set(["name": "John", "age": 30], forKey: "myDictionary") // 检索键"myDictionary"的字典 let myDictionary = defaults.dictionary(forKey: "myDictionary") as? [String: Any] ?? [:] print(myDictionary)
输出
["name": John, "age": 30]
此示例展示了如何使用 set 方法和键"myDictionary"将字典保存到 UserDefaults。然后,它使用 dictionary 方法和相同的键检索该字典,并将其转换为包含 String 键和 Any 值的字典。如果转换由于某种原因失败,它将默认为一个空字典。最后,它打印出检索到的字典。
结论
总而言之,UserDefaults 是 iOS、macOS 和 watchOS 中的基本存储机制。它使应用能够存储少量信息,例如用户偏好设置。它使用键值对系统,将值分配给特定的键,然后使用该键获取值。
UserDefaults 是存储基本数据类型的绝佳工具,因为它使用简单,不需要其他库或框架。它不适用于处理大数据集或更复杂的数据类型,因此在某些情况下,您可能需要使用 Core Data、SQLite 数据库或属性列表作为替代存储方法。