在CoreData中因为Model继承自NSManagedObject
并且属性类型为@dynamic
, 所以在生成Set和Get方法的时候,不能使用_var
来获取。以下为正确的使用方法:
- (NSString *)definition
{
[self willAccessValueForKey:@"definition"];
NSString *preview = [self primitiveValueForKey:@"definition"];
[self didAccessValueForKey:@"definition"];
if ([preview containsString:@"<br>"]) {
preview = [preview stringByReplacingOccurrencesOfString:@"<br>" withString:@"\n"];
}
return preview;
}
- (void)setDefinition:(NSString *)definition
{
[self willAccessValueForKey:@"definition"];
NSString *value = [definition copy];
if ([value containsString:@"<br>"]) {
value = [value stringByReplacingOccurrencesOfString:@"<br>" withString:@"\n"];
}
[self setPrimitiveValue:value forKey:@"definition"];
[self didAccessValueForKey:@"definition"];
}
在set方法中value值如果为nil也是没有问题的。
但是一个非常奇怪的地方就是在NSManagedObject
生成的Get和Set方法中都不能使用断点,不知道是不是Apple的一个bug。