我有一個名爲'Settings'的Realm類,主鍵爲'Settings'。通過這種方式,我只能在Settings Realm中創建一條記錄。 Settings類包含幾個需要在應用程序生命週期中訪問的變量(I.e showDetailedCell(bool),username(string),appColor(string))。他們也必須保持最新狀態。例如。如果showDetailedCell爲true,我有一個tableView在單元格中顯示詳細信息。如果用戶在設置中關閉了這個功能,則應該使用新設置的值更新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
}
什麼是做到這一點的最好方法是什麼? 謝謝!
我同意,用於存儲這樣的簡單值和只存儲模型類的一個實例,UserDefaults似乎是一個更好的辦法。 –
感謝您的信息。在實現Realm之前,我使用了UserDefaults,它工作正常。我開始使用Realm來處理更大的數據庫的同時,因爲通過在用戶的反饋電子郵件中包含Settings域,可以輕鬆排除錯誤。當我同步Realm中沒有看到的UserDefaults時,我也看到了一些延遲(獲取和設置值)。如果這是推薦的方法,我會考慮切換回去!謝謝! – fisher
@fisher好吧,如果您已經嘗試過這兩種方法,並且您發現Realm速度更快,那麼堅持使用它。一般來說,UserDefaults應該更容易用於這樣一個簡單的模型,並且也可以更快,但是如果你對Realm的使用速度更快,並且使用起來也更容易,那麼你不應該改變這種方法。 –