在我的应用中,用户可以在集合视图中选择多个联系人。当他选择一个单元格时,该属性被选中"在相应的对象"联系"将设置为true并且collectionview刷新所选单元格:
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let contact: self.filteredContacts[indexPath.row]
self.invertSelectionStatusOfContact(contact)
self.collectionView?.reloadItemsAtIndexPaths([indexPath])
}
func invertSelectionStatusOfContact(contact:Contact){
try! self.realm.write {
contact.isSelected = !contact.isSelected
}
}
当我使用coredata时,大约500毫秒有一个延迟,速度要快得多。有什么我可以获得更多的表现吗?
答案 0 :(得分:1)
我有类似的问题,毕竟我决定不动态使用$(window).scroll(function(){
if($("#nav-bar").scrollTop() == 0 && $("#nav-bar").css("opacity") != 1 ){
$( "#nav-bar" ).css("opacity", 0.5);
}else if( $("#nav-bar").scrollTop() != 0 && $("#nav-bar").css("opacity") != 0.5 ){
$( "#nav-bar" ).css("opacity", 1);
}
});
(每次用户选择联系时)。
而不是,我决定在我的ViewController中保留对我的联系人对象的引用并更改属性realm.write
:
isSelected
当用户即将离开您的ViewController时,请勿忘记使用func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
let contact: self.filteredContacts[indexPath.row]
contact.isSelected = !contact.isSelected
self.collectionView?.reloadItemsAtIndexPaths([indexPath])
}
更新您的联系对象。
整个技巧仅用于realm.write()
一次。试着弄明白什么时候这是好时机。
修改强> 我不认为你可以提高Realm写入事务的性能。这绝对是耗时的,主要是因为文件I / O.