在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:@"<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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容