我有一个名为“设置”的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
}
最好的方法是什么? 谢谢!
答案 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")