Core data 核心数据实用程序教程中未调用setNilValueForKey
苹果公司建议实施Core data 核心数据实用程序教程中未调用setNilValueForKey,core-data,key-value,key-value-coding,Core Data,Key Value,Key Value Coding,苹果公司建议实施setNilValueForKey:并测试其效果: 使用键值编码将进程ID设置为nil。构建并运行该实用程序。再说一遍,会发生什么?最后,再次注释setNilValueForKey:method和test 我尝试使用以下代码将进程ID设置为nil:[run setValue:nil forKey:@“processID”]但这不会调用setNilValueForKey:。为什么不呢 这是我的实现;我添加的NSLog语句从未出现 - (void) setNilValueForKey
setNilValueForKey:
并测试其效果:
使用键值编码将进程ID设置为nil。构建并运行该实用程序。再说一遍,会发生什么?最后,再次注释setNilValueForKey:method和test
我尝试使用以下代码将进程ID设置为nil:[run setValue:nil forKey:@“processID”]代码>但这不会调用setNilValueForKey:
。为什么不呢
这是我的实现;我添加的NSLog语句从未出现
- (void) setNilValueForKey:(NSString*)key {
NSLog(@"setNilValueForKey: %@", key) ;
if ( [key isEqualToString:@"processID"] ) {
[self setValue:@0 forKey:key ] ;
}
else {
[super setNilValueForKey:key] ;
}
}
我找到了,但没有人回答这个问题。如果使用动态生成的访问器方法,似乎永远不会调用setNilValueForKey:
如果为“Run.m”中的“processID”属性提供自定义setter方法:
然后
导致调用setNilValueForKey:
这只是我经历的尝试和错误,我没有官方的参考。但“核心数据实用程序教程”自MacOSX10.4以来就存在了,在MacOSX10.4中,动态生成的访问器方法(据我所知)还不存在。因此,可能是关于setNilValueForKey:
的部分没有针对10.5进行更新。但这完全是我的猜测。谢谢你的解释!我会用苹果的“这份文件对你有帮助吗?”文件反馈留下反馈。@ghettopia:不客气。-你也可以在bugreport.apple.com上提交一个bug,这里有一个特殊的类别“文档”。
- (void)setProcessID:(NSInteger)processID
{
[self willChangeValueForKey:@"processID"];
[self setPrimitiveValue:@(processID) forKey:@"processID"];
[self didChangeValueForKey:@"processID"];
}
[run setValue:nil forKey:@"processID"]