【发布时间】:2019-09-06 00:09:33
【问题描述】:
在我的 iOS 应用程序中,我使用 Realm 库来存储数据。它工作得很好,直到由于某种原因,对象失效。 (在特定情况下的原因可能是我有时会在相同的数据上执行后台作业,这些数据在视图或类似场景中变得可视化)。
我知道它为什么会发生,并且我理解是正确的行为,但从那里开始:我应该实施的正确行为是什么?
我很想再次从 Realm 中提取数据并继续我的工作,但是当一个对象失效时,每个字段都无法访问并导致环境崩溃(所以,我不知道对象)。
如何安全地再次从该对象中提取当前数据,而不将 id 存储在 ViewController 中?
这是一些代码。由于应用程序的结构不同,我不得不对其进行大量编辑,但问题仍然存在。假设 table view delegate 是 view 并且所有的技术细节都在那里。
// A class variable
var events: RLMResults<RLMMyEvent>
// A table view that shows all "MyEvents"
var tableview: UITableView
func initialiseView(_ predicate: NSPredicate) {
// Get the events with a predicate from Realm
events = RLMMyEvent.objects(with: predicate)
tableview.reloadData()
}
// All tableView delegates, and in particular
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath) as! MyCell
let event = self.events[UInt(indexPath.row)]
if !event.isInvalidated {
} else {
/***** HERE is the problem. What to do here?
HOW to get those data again, since I cannot
get that event's unique ID? ****/
}
cell.initialize(event)
return cell
}
【问题讨论】:
-
添加示例代码,以便我们更准确地帮助您。
-
谢谢,我做到了。