我有两个NSManagedObject
子类
我正在为NSManagedObject
表示JSON
添加类别方法,因此我将此类别命名为NSManagedObject+JSON
。
在NSManagedObject+JSON.m
中实施类别方法:
- (NSDictionary *)JSONToCreateObjectOnServer {
@throw [NSException exceptionWithName:@"JSONStringToCreateObjectOnServer Not Overridden" reason:@"Must override JSONStringToCreateObjectOnServer on NSManagedObject class" userInfo:nil];
return nil;
}
我正在关注Ray Weinderleich教程:http://www.raywenderlich.com/17927/how-to-synchronize-core-data-with-a-web-service-part-2
它说:
这里的问题是这种方法没有可能的通用实现。所有NSManagedObject
子类都必须通过覆盖它来实现此方法。
每当NSManagedObject
子类未实现此方法时,将抛出异常。
我的问题:
我已将类别中的方法添加到我的子类中。但我的代码不调用我的NSManagedObject
子类中的方法而是调用类别并抛出异常。
这里缺少什么? 任何人都可以指出其背后的原因吗?
编辑1:
- (NSDictionary *)JSONToCreateObjectOnServer {
NSDictionary *date = [NSDictionary dictionaryWithObjectsAndKeys:
@"Date", @"__type",
[[SDSyncEngine sharedEngine] dateStringForAPIUsingDate:self.date], @"iso" , nil];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
self.name, @"name",
self.details, @"details",
self.wikipediaLink, @"wikipediaLink",
date, @"date", nil];
return jsonDictionary;
}
这是我添加到NSManagedObject类的方法。
我已经复制并粘贴了它。是它的becoz或我必须遵循另一个过程向NSManagedObject类添加方法。
答案 0 :(得分:2)
创建类别用于展开,而不是用于覆盖或修改。所以我们无法保证它是否会覆盖或被覆盖。
在您的情况下,您应该创建一个子类NSManagedObject,而不是使用Category。然后将下面的方法放到父类。
- (NSDictionary *)JSONToCreateObjectOnServer {
@throw [NSException exceptionWithName:@"JSONStringToCreateObjectOnServer Not Overridden" reason:@"Must override JSONStringToCreateObjectOnServer on NSManagedObject class" userInfo:nil];
return nil;
}
另一个类将子类化您的父类而不是NSManagedObject。
P / S:你应该使用NSAssert而不是throw。
参考文献: