gpt4 book ai didi

ios - 当关系发生变化时,是否有更新 NSManagedObject 的好方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:51 25 4
gpt4 key购买 nike

这是我的场景的简化版本,但没关系。

假设您有三个 CoreData 实体,每个实体都有一个对应的 NSManagedObject 子类,一对一关系如下:

人 -> 联系人记录 -> 电话号码

Person 实体有一个 vcard 属性,它在一个字符串中保存那个人的 vCard 数据。

PhoneNumber 实体有两个属性:实际号码和电话号码的类型(手机、家庭、工作等)。

现在,在 Person willSave 方法中,我正在更新 vcard 属性。如果 Person 对象上的另一个属性已更改,则此方法工作正常。但是,如果我更改 PhoneNumber 对象的类型或号码,或者 ContactRecord 的任何属性,则不会在 Person 对象上调用 willSave 方法。

当 PhoneNumber 对象的属性发生变化时,是否有更新 Person 对象的好方法?

目前,我认为最好的选择是使用 NSManagedObjectContextWillSaveNotification。该通知调用的方法可以筛选更改的对象并返回反向关系以调用 Person 对象上的某些方法,但这是在 NSManagedObjectContext 已经保存之后发生的,因此之后需要再次保存。我希望在保存之前将此属性设置为正确的值。

最佳答案

NSManagedObjectContextWillSaveNotification 方法在保存发生之前被调用,因此您可以在那里进行更改,不需要第二次保存。

在这种情况下,我的偏好是根本不存储 vcard,而是将其设为只读的从属属性。我假设您不需要经常访问 vcard,因此在 getter 方法中即时生成数据应该没问题,并且数据将始终是最新的。

在保存之前更新数据的一个问题是您必须确保保存。如果您尝试在不保存的情况下获取 vcard,它将过时。依赖的只读属性不会有这个问题。

关于ios - 当关系发生变化时,是否有更新 NSManagedObject 的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21641154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com