从 NSManagedObject deinit 的上下文中删除关系和对象

Posted

技术标签:

【中文标题】从 NSManagedObject deinit 的上下文中删除关系和对象【英文标题】:Delete relationship and object from context in NSManagedObject deinit 【发布时间】:2016-01-23 08:49:03 【问题描述】:

我有一个NSManagedObject,它的关系看起来像这样:

class Foo: NSManagedObject 

    let context = (UIApplication.sharedApplication().delegate as! AppDelegate).model.context

    @NSManaged var something: NSSet

    // Some setup etc.

当我从上下文中删除这个对象时,我也想删除 something 并尝试在 Foo 类中使用 deinit 这样做:

deinit 
    print(something.count) // prints 0

    something.forEach  context.deleteObject($0) 

当我删除Foo 的实例时,deinit 将被调用,但在调用deinit 之前不知何故与something 的关系丢失了。有没有办法使用deinit 删除something 而不是单独手动删除?

【问题讨论】:

【参考方案1】:

这就是关系上的级联删除规则的用途。在 Xcode 的模型视图中设置它。

【讨论】:

我在谷歌上搜索并尝试了很多东西,解决方案很简单......非常感谢。

以上是关于从 NSManagedObject deinit 的上下文中删除关系和对象的主要内容,如果未能解决你的问题,请参考以下文章

从内存中删除 UIView 时,快速 deinit 方法不起作用

当这行代码执行时 deinit() 停止调用

未调用 deinit 的解释

永远不会调用 Deinit 方法 - Swift Playground

Deinit / 无效定时器

UITableViewDiffableDataSource 不是 deinit