gpt4 book ai didi

objective-c - Core-Data 中的自定义设置方法

转载 作者:IT老高 更新时间:2023-10-28 11:26:24 26 4
gpt4 key购买 nike

我需要在我的 NSManagedObject 子类中为一个字段(我们称之为 foo)编写一个自定义的 setter 方法。 foo 在数据模型中定义,Xcode 分别在 .h 和 .m 文件中自动生成了 @property@dynamic 字段。

如果我这样写我的 setter :

- (void)setFoo: (NSObject *)inFoo {
[super setFoo: inFoo];
[self updateStuff];
}

然后我在调用 super 时收到编译器警告。

或者,如果我这样做:

- (void)setFoo: (NSObject *)inFoo {
[super setValue: inFoo forKey: inFoo];
[self updateStuff];
}

然后我会陷入无限循环。

那么为 NSManagedObject 的子类编写自定义 setter 的正确方法是什么?

最佳答案

根据the documentation ,应该是:

- (void) setFoo:(NSObject *)inFoo {
[self willChangeValueForKey:@"foo"];
[self setPrimitiveValue:inFoo forKey:@"foo"];
[self didChangeValueForKey:@"foo"];
}

当然,这忽略了 NSManagedObjects 只想要 NSNumbersNSDatesNSDatas 的事实,和 NSStrings 作为属性。

但是,这可能不是最好的方法。既然您希望在 foo 属性的值发生变化时发生一些事情,为什么不直接用 Key Value Observing 观察它呢? ?在这种情况下,这听起来像是“KVO 的必经之路”。

关于objective-c - Core-Data 中的自定义设置方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2971806/

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