gpt4 book ai didi

ios - KVO addObserver 到CoreData对象的一对多关系

转载 作者:技术小花猫 更新时间:2023-10-29 11:18:03 26 4
gpt4 key购买 nike

大家好多年阅读 StackOverflow,现在我决定加入。我正在努力解决这个问题:

我有一个“Depot”实体,它有两个对多关系“Persons”和“Trucks”。我想观察在给定“Depot”对象的情况下,其中一种关系(并了解是哪一种关系)发生变化(插入、删除)。

目前我正在这样做:

[mydepot addObserver:self forKeyPath:@"Trucks"options:NSKeyValueObservingOptionNew context:nil];

[mydepot addObserver:self forKeyPath:@"Persons"options:NSKeyValueObservingOptionNew context:nil];

但每次两个相关集合之一发生变化时,observeValueForKeyPath 都会被调用两次(每个键路径一次)。

我做错了吗?查看“更改”字典,(也使用 OptionOld 进行观察)显示没有意外更改(当我更改人员时,卡车没有更改)但仍然会发出通知。

谢谢,彼得罗

编辑:似乎两次“更改”字典都包含"new"字段中的整个关系。 (显然是一次人和一次卡车)

edit2:即使是简单的属性,它是否与 managedctx 保存操作有关?就好像当你保存时,整个对象被认为是改变了..

最佳答案

在 Key Value Observing Programming Guide 中说

If you're using Core Data, you can register the parent with the application's notification center as an observer of its managed object context. The parent should respond to relevant change notifications posted by the children in a manner similar to that for key-value observing.

这实际上意味着推荐的做法不是使用 addObserver:forKeyPath:options:context:,而是注册 NSManagedObjectContextDidSaveNotification

关于ios - KVO addObserver 到CoreData对象的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15658518/

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