Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Core data 核心数据实用程序教程中未调用setNilValueForKey_Core Data_Key Value_Key Value Coding - Fatal编程技术网

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"]