Coredata 当swift中没有children时删除Parent条记录 5

Coredata Delete Parent record when there is no children in swift 5

我有一个 AlbumDB(Parent) 和 SongInfoDB(Children)。当没有 children 时,我需要删除一个 parent 以及 AlbumDB。

图中这里没有SongInfoDB,我需要去掉AlbumDB。换句话说,当我删除所有 songs 时,album 将自动删除。

我检查了一些 Whosebug link 并尝试了核心数据删除规则。 Nullify、Cascade、Deny 但 none 这些对我有用!

对此有什么建议吗?谢谢!

没有自动方式。如果删除了父对象,您可以自动删除子对象,反之亦然。

一个可能的解决方案是创建一个删除歌曲的函数,然后检查专辑(关系)是否为空,如果是,则也删除专辑。

类似

func deleteSong(_ song : Song) {
    context.delete(song)
    let album = song.album!
    if album.songs.isEmpty {
        context.delete(album)
    }
    context.save()
}