在NSManagedObject类中实现 Get 和 Set 方法

在CoreData中因为Model继承自NSManagedObject 并且属性类型为@dynamic, 所以在生成Set和Get方法的时候,不能使用_var 来获取。以下为正确的使用方法:

- (NSString *)definition
{
    [self willAccessValueForKey:@"definition"];

    NSString *preview = [self primitiveValueForKey:@"definition"];
    [self didAccessValueForKey:@"definition"];
    if ([preview containsString:@"
"]) { preview = [preview stringByReplacingOccurrencesOfString:@"
" withString:@"\n"]; } return preview; } - (void)setDefinition:(NSString *)definition { [self willAccessValueForKey:@"definition"]; NSString *value = [definition copy]; if ([value containsString:@"
"]) { value = [value stringByReplacingOccurrencesOfString:@"
" withString:@"\n"]; } [self setPrimitiveValue:value forKey:@"definition"]; [self didAccessValueForKey:@"definition"]; }

在set方法中value值如果为nil也是没有问题的。

但是一个非常奇怪的地方就是在NSManagedObject生成的Get和Set方法中都不能使用断点,不知道是不是Apple的一个bug。

你可能感兴趣的:(在NSManagedObject类中实现 Get 和 Set 方法)