我是使用RealmSwift的新手,我使用swift 3.0和后端数据库作为RealmSwift创建聊天应用程序。插入聊天时可以很好地进入领域,但是获取记录时的事情
let newChat = uiRealm.objects(Chats.self).filter(
"(from_id == \(signUser!.user_id)
OR from_id == \(selectedList.user_id))
AND (to_id == \(signUser!.user_id)
OR to_id == \(selectedList.user_id))"
).sorted(byProperty: "id", ascending: true)
我不知道如何限制聊天对话的最后30条记录。在上面的代码中,我只是从“聊天”表中获取记录,并将聊天过滤为“签名的用户ID和用户ID”。如果我列出特定聊天的所有记录(例如超过150个聊天对话),那么从tableview向上滚动记录会被卡住或挂起一段时间。所以请介绍一下如何限制最后30条记录并停止挂起tableview。提前致谢
答案 0 :(得分:1)
就像我写in the Realm documentation一样,因为Realm Results
对象是懒惰加载的,如果你查询所有对象然后只是加载你需要的那些对象并不重要。 / p>
如果你想将它排成一个表格视图,你可以创建一个辅助方法,将最后30个结果映射到0-30索引范围,这样更容易直接传递到表格视图'数据来源:
func chat(atIndex index: Integer) -> Chats {
let mappedIndex = (newChat.count - 30) + index
return newChat[mappedIndex]
}
如果您已经成功查询并开始访问这些对象(即查询本身并没有挂起),我不确定为什么表视图会在事后挂起。您可以尝试在Instruments中运行Time Profiler,以准确追踪导致主要线程被阻止的原因。