JEL*_*JEL 6 realm ios uicollectionview swift realm-list
我有一个集合视图,您可以在其中选择要删除的多个单元格.这意味着如果删除多个单元格,则还应在Realm中删除多个对象 - 每个单元格1个对象.
我有一个函数,它接受一个数组,这些数组Int
将从集合视图的选定indexPaths中填充.
问题是我不知道如何做到这两点
1)删除Realm中的对象和
2)拥有List
最新的没有删除的对象
我的代码是:
我像这样得到索引路径:
let indexPaths = collectionView.indexPathsForSelectedItems
这是我接受indexPaths,更新List
和删除Realm中对象的函数.它目前无法正常工作,因为没有删除对象.我注意到removeAll
没有删除任何东西.
func removeVideos(at indexes: [Int]) {
let newVideos = List<Video>()
for (index, video) in favorite!.videos.enumerated() {
if !indexes.contains(index) {
newVideos.append(video)
}
}
let realm = try! Realm()
try! realm.write {
favorite!.videos.removeAll()
newVideos.forEach { newVideo in
favorite!.videos.append(newVideo)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我这样调用这个函数:
removeVideos(at: indexPaths.map { $0.item })
有什么想法吗?
TiM*_*TiM 15
List.removeAll()
不会从Realm中删除对象.它只是将它们从该List
对象中删除,删除它们与其父对象(在本例中为favorite
对象)的关系.删除对象及其父List
对象是一个名为"级联删除"的功能,它仍在 Realm GitHub上讨论.
如果您确实想要删除它们,那么只需致电realm.delete(favorite!.videos)
.这将从Realm中删除它们并自动清除该List
属性.
你可能需要小心你的实现.一旦Object
从Realm中删除了一个,任何现有的引用都无法重新添加回Realm.仅删除newVideo
对象本身而不是清除整个对象可能是恰当的List
.
func removeVideos(at indexes: [Int]) {
let newVideos = [Video]()
for (index, video) in favorite!.videos.enumerated() {
if !indexes.contains(index) {
newVideos.append(video)
}
}
let realm = try! Realm()
try! realm.write {
realm.delete(newVideos)
}
}
Run Code Online (Sandbox Code Playgroud)
只要您在集合视图上设置了Realm通知块,就应该只需要将它们从UI中删除即可.
归档时间: |
|
查看次数: |
9996 次 |
最近记录: |