Apple 的Core Data Utility Tutorial建议实施setNilValueForKey:
和测试其效果:
使用键值编码将进程 ID 设置为 nil。构建并运行该实用程序。再次,会发生什么?最后,注释掉 setNilValueForKey: 方法并再次测试。
我尝试使用此代码将进程 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] ;
}
}
我发现了类似的 stackoverflow 讨论,但没有人回答这个问题。