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

时间:2017-06-21 10:06:51

标签: ios swift realm

我有一个名为“设置”的Realm类,主键为“设置”。这样我在Settings Realm中只有一条记录。 Settings类包含几个变量(即showDetailedCell(bool),username(string),appColor(string)),我需要在应用程序的生命周期中多次访问。他们还必须保持最新状态。例如。我有一个tableView,如果showDetailedCell为true,它会在单元格中显示详细信息。如果用户在设置中将其关闭,则应使用新设置的值更新tableview。这就是我现在这样做以确保我始终拥有最新价值,但我认为它不是很有效:

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

}

最好的方法是什么? 谢谢!

1 个答案:

答案 0 :(得分:0)

如果我是你,我会去ArgumentNullException

  

用户存储默认数据库的界面   在给定的应用程序的调用中持久保存键值对   设备

使用UserDefaults(.plist)存储数据对于用户来说将是有点昂贵的,就像他们从@matt备份设备UserDefaults一样。但是,如果您要保存应用程序的状态,则应该使用UserDefaults,因为它将在用户之间同步'设备通过iCloud。

  

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

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

// Get User Preference
UserDefaults.standard.value(forKey: "KEY")