使用 Realm 数据作为应用程序设置



我有一个名为"设置"的领域类,主键为"设置"。这样,我在设置领域中将只有一条记录。Settings 类包含几个变量(即 showDetailedCell (bool(、用户名(字符串(、appColor (字符串((,我需要在应用程序的生命周期中多次访问这些变量。他们还必须保持最新状态。例如。我有一个表视图,如果显示详细单元格为真,则在单元格中显示详细信息。如果用户在设置中关闭此功能,则应使用新设置的值更新表视图。这就是我现在的做法,以确保我始终拥有最新的价值,但我认为它不是很有效:

var _generalSettings : Settings?
var generalSettings : Settings? {
    get {
        if self._generalSettings == nil || self._generalSettings?.isInvalidated == true {
            self._generalSettings = try? Settings.getNewOrExisting().object
        }
        self._generalSettings?.realm?.refresh()
        return self._generalSettings
    }
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> RosterCell {
    //Create the cell
    let cell = tableView.dequeueReusableCell(withIdentifier: "MainCell", for: indexPath) as! MainCell
   let showDetailed = generalSettings?.showDetailedCell ?? true
   cell.setupAsDetailed = showDetailed
    return cell
}
最好的

方法是什么?谢谢!

如果我是你,我会选择UserDefaults

用户默认数据库的接口,用于存储 在给定应用调用期间持久地进行键值对 装置。

使用UserDefaults(.plist(存储数据对用户来说会有点昂贵,因为如果他们备份设备,存储在文档文件夹中的数据也将从@matt备份。但是,如果要保存应用程序的状态,则应选择UserDefaults因为它将通过iCloud在用户的设备之间同步。

应用可以使用 iCloud 键值存储来共享少量 用户其他计算机上自身其他实例的数据,以及 苹果设备。例如,杂志应用可能会存储当前问题 和页码被用户读取,以便 应用程序可以在启动时打开到同一页面。

// Set User Preference
UserDefaults.standard.set("VALUE", forKey: "KEY")
UserDefaults.standard.synchronize()
// Get User Preference
UserDefaults.standard.value(forKey: "KEY")

相关内容

最新更新