我有一个表格视图,一旦单元格即将可见,我加载它的图像。加载图像时,应将包含 NSData (继承自对象)的模型写入数据库。
我尝试了两种方法:
第一个要么要么滚动整个表格视图(如果我们懒洋洋地加载图像)要么加载viewDidLoad()
上的图像,这也不是最好的选择。
第二种方式是好的,只要加载图像,其模型最终会更新。但是 Realm 会冻结write()
功能上的用户界面。
我尝试使用异步主队列进行写入,但每次Realm执行写操作时都会产生短暂的毛刺。我也尝试使用UserInitiated异步队列,但这只会导致我的应用程序崩溃...
let queue = NSOperationQueue()
queue.qualityOfService = .UserInitiated
// this code is executed on imageDidLoad()
queue.addOperationWithBlock {
let realm = Realm()
realm.refresh()
realm.write {
realm.add(downloadable!, update: true)
}
}
结果我得到了:
***因未捕获的异常“RLMException”而终止应用程序,原因:'对象已经存在于领域'
可能是什么解决方案?
答案 0 :(得分:0)
如果没有更多上下文,很难分辨,但似乎$filter
已经是一个持久的downloadable
,所以尝试在另一个线程上使用它实际上无法工作。如果Object
有主键,您可能希望使用它,执行类似于以下操作的内容:
downloadable