gpt4 book ai didi

cocoa - Core Data 无法生成原始访问器

转载 作者:行者123 更新时间:2023-12-03 17:32:42 27 4
gpt4 key购买 nike

根据我对 Core Data 的理解,原始访问器工作所需的只是属性名称的 @dynamic 指令(以及在实体实现中声明该属性的原始访问器)。

由于某种原因,当使用生成的基元访问器时,setState: 方法修改状态属性:

- (int)state 
{
NSNumber * tmpValue;

[self willAccessValueForKey:@"state"];
tmpValue = [self primitiveState];
[self didAccessValueForKey:@"state"];

return [tmpValue intValue];
}

- (void)setState:(int)value
{
[self willChangeValueForKey:@"state"];
[self setPrimitiveState:[NSNumber numberWithInt:value]];
[self didChangeValueForKey:@"state"];
}

使用键值编码版本时确实修改状态属性

- (int)state 
{
NSNumber * tmpValue;

[self willAccessValueForKey:@"state"];
tmpValue = [self primitiveValueForKey:@"state"];
[self didAccessValueForKey:@"state"];

return [tmpValue intValue];
}

- (void)setState:(int)value
{
[self willChangeValueForKey:@"state"];
[self setPrimitiveValue:[NSNumber numberWithInt:value] forKey:@"state"];
[self didChangeValueForKey:@"state"];
}

在这两种情况下,I 原语访问器声明如下(并根据 Apple 的示例和代码生成):

@interface Post (CoreDataGeneratedPrimitiveAccessors)

- (NSNumber *)primitiveState;
- (void)setPrimitiveState:(NSNumber *)value;

@end

我有点不明白为什么会这样。任何帮助将不胜感激!

最佳答案

经过大量的绞尽脑汁、调试、摆弄和猜测和检查,我终于弄清楚了问题所在:如果将这些属性定义为实例变量,则核心数据基元访问器不会动态生成。我定义它们是为了调试目的(因为 GBD 似乎无法在没有定义的 ivars 的情况下看到属性的值),这会阻止正确生成原始访问器。苹果确实应该以某种形式记录这一点。因为靠自己去发现是非常困难的。我希望这对遇到同样问题的其他人有所帮助!

关于cocoa - Core Data 无法生成原始访问器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4481787/

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