我用这段代码覆盖了核心数据设置器:
- (void)setName:(NSString *)newName
{
[self willChangeValueForKey:@"name"];
[self setPrimitiveName:newName];
[self didChangeValueForKey:@"name"];
}
它完美无缺,但是我收到了编译器警告:
warning: 'MyClass' may not respond to '-setPrimitiveName:newName:'
这是对的吗?如果是这样,我可以抑制此警告吗? 感谢
答案 0 :(得分:1)
是的,这是正确的方法。核心数据将自动生成setPrimitiveName:
方法。要删除警告,请在实现文件的顶部添加一个类别接口,用于声明原始访问器。
// MyClass.m
@interface MyClass (CoreDataPrimitiveAccessors)
- (void)setPrimitiveName:(NSString *)newName;
- (NSString *)primitiveName;
@end
// class implementation goes here
答案 1 :(得分:1)
编译器警告很糟糕:[self setPrimitiveValue:newName forKey:@"name"];
答案 2 :(得分:-1)
您必须在标题(MyClass.h)
中声明该方法- (void)setPrimitiveName:(NSString *)newName;