在iOS第1部分中保存数据

用户默认数据库的接口,您可以在其中存储应用程序启动期间的键值对。

User Defaults类提供了用于与默认系统进行交互的编程界面。 所有iOS设备都有一个名为默认数据库的数据库,以提供用于永久保存应用程序相关数据的功能。 这样,应用程序可以访问存储的值,然后根据这些值执行逻辑。

在运行时,我们使用用户默认值对象从用户的默认数据库中读取应用程序使用的默认值(存储的首选项或值)。 用户默认值会缓存信息,以避免每次我们需要默认值时都必须打开用户的默认值数据库。

此处引用的缓存是内存中缓存,这意味着存储在“ 用户默认值”中的所有内容都会在应用启动时加载到内存中,并在应用运行时保留在内存中。 根据存储的数据量,这或多或少会影响设备性能。

当我们设置默认值时,它将在我们的流程中同步更改,并异步更改为持久性存储和其他流程。 只需在运行时更改任何存储的默认值的值,它就会从缓存同步更改其值。 从那里将其异步保存到磁盘(数据库)中,因为这类I / O(操作)有点昂贵。

→存储为默认值:

User Defaults类提供以下方便的方法来访问常见类型,例如浮点数,双精度数,整数,布尔值和URL。

  • func set(_ value:Any ?, forKey defaultName:String)
  • func set(_ value:Int,forKey defaultName:String)
  • func set(_ value:Float,forKey defaultName:String)
  • func set(_ value:Double,forKey defaultName:String)
  • func set(_ value:Bool,forKey defaultName:String)
  • func set(_ url:URL ?, forKey defaultName:String)

要使用具有用户默认设置的对象,该对象必须是Propertylist类型或Json类型。 例如字符串,数字,数据,日期,数组/字典。 如果我们想将自定义对象与userdefaults一起使用,则需要将它们转换为data(object)类型。

  • 即使我们将可变对象设置为值,从UserDefaults返回的值也是不可变的。 例如,如果我们将可变字符串设置为“ MyStringDefault”的值,则稍后使用string(forKey:)方法检索的string(forKey:)将是不可变的。
  • 如果我们将可变字符串设置为默认值,然后再对该字符串进行突变,则除非再次调用set(_:forKey:) ,否则默认值将不会反映该突变的字符串值。 例如,

var myCurrentCity =“悉尼”

如果我们存储上面的值,然后稍后再用相同的键检索该值,则它返回不可变的,这意味着它是“ let”常量。 我们无法更改或修改它。

对于第二个示例: 在用户默认值中设置了上面的“ myCurrentCity”属性后,稍后在某个时候更改property(myCurrentCity)值将不会更改默认值中存储的值。 要更改此设置,我们需要再次调用其方法之一 set(_:forKey 🙂

→从默认值检索:

我们可以使用以下方法来检索存储在“ 默认值”数据库中的

  • func object(forKey: String) -> Any?

返回与指定键关联的对象。

  • func url(forKey: String) -> URL?

返回与指定键关联的URL。

  • func array(forKey: String) -> [Any]?

返回与指定键关联的数组。

  • func dictionary(forKey: String) -> [String : Any]?

返回与指定键关联的字典对象。

  • func string(forKey: String) -> String?

返回与指定键关联的字符串。

  • func stringArray(forKey: String) -> [String]?

返回与指定键关联的字符串数组。

  • func data(forKey: String) -> Data?

返回与指定键关联的数据对象。

  • func bool(forKey: String) -> Bool

返回与指定键关联的布尔值。

  • func integer(forKey: String) -> Int

返回与指定键关联的整数值。

  • func float(forKey: String) -> Float

返回与指定键关联的浮点值。

  • func double(forKey: String) -> Double

返回与指定键关联的双精度值。

  • func dictionaryRepresentation() -> [String : Any]

返回一个字典,其中包含搜索列表中域中所有键值对的并集。

我们知道所有检索值都是不可变的类型。

→响应默认值更改:

您可以使用键值观察来通知对特定默认值的任何更新。 您还可以在default NotificationCenter上注册为didChangeNotification的观察者,以便收到有关本地默认数据库的所有更新的通知。

→从默认值中删除值:

  • func removeObject(forKey: String)

删除指定的默认密钥的值。

→持久文件引用:

最好通过在URL上使用bookmarkData(options:includingResourceValuesForKeys:relativeTo:)方法保存文件,并且使用set(_:forKey :)方法可以持久保存文件 然后,我们可以使用URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:方法将用户默认存储的书签数据解析为文件URL。

→让我们看一个例子:

您可以在此处下载示例项目。

— — — — — — — — — — ************************** — — — — — — — — —

您可以在推特和链接上与我联系/关注我 帐户。

谢谢阅读…

****************************!!!再见!!!************** **************