1

我了解原始设置器和非原始设置器(KVO 通知等)之间的区别。但是,如果我编写自己的 setValue:forKey: 并调用 setPrimitiveValue:forKey:,我是否必须将 SAME 值传递给它?我阅读了文档,我用谷歌搜索了它,但我根本找不到任何关于这个的讨论。

编辑:谢谢,adpalumbo 和 Dave FN。你们都同意它不必是相同的值。我真正的问题是这个。我编写自己的 setter 和 getter。然后我在 NSManagedObject 上调用 setter 以更改其原始值,但由于自定义 getter 的编写方式,它仍然返回旧值(原始值已被修改。但如果您在修改前后调用自定义 getter ,您将看不到任何变化。)。在此之后,我在 NSManagedObjectContext 上调用 hasChanges 并返回 NO!如果我在上下文中调用 save ,则根本不会保存更改。任何想法?正常行为?潜在的核心数据错误?

4

2 回答 2

0

不,这是它的用途之一。

在调用. setValue:forKey:_NSDatasetPrimitiveValue:forKey:

于 2013-07-26T20:31:58.730 回答
0

不,您不必将相同的值传递给原始存储。就像非核心数据对象一样,setter 可以为实例变量分配任何值。

当然,当您调用时,valueForKey:您将得到传递给原始存储的任何内容,而不是最初传递给的内容setValue:forKey:,除非您还覆盖它并返回其他内容。

编辑
覆盖核心数据设置器时,请确保setPrimitiveValue:forKey:使用willChangeValueForKey:and包装didChangeValueForKey:

于 2013-07-26T20:31:48.977 回答