覆盖核心数据设置器:警告:' MyClass'可能无法回复' -setPrimitiveName:newName:'

时间:2011-11-04 14:56:13

标签: objective-c cocoa core-data

我用这段代码覆盖了核心数据设置器:

- (void)setName:(NSString *)newName
{
    [self willChangeValueForKey:@"name"];
    [self setPrimitiveName:newName];
    [self didChangeValueForKey:@"name"];
}

它完美无缺,但是我收到了编译器警告:

warning: 'MyClass' may not respond to '-setPrimitiveName:newName:'

这是对的吗?如果是这样,我可以抑制此警告吗? 感谢

3 个答案:

答案 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;