Cocoa 扩展CoreDataGeneratedAccessor行为

Cocoa 扩展CoreDataGeneratedAccessor行为,cocoa,core-data,Cocoa,Core Data,我有一个带有CoreDataGeneratedAccessor的NSManagedObject子类,如下所示: - (void)addCoursesObject:(Course *)value; - (void)removeCoursesObject:(Course *)value; - (void)addCourses:(NSSet *)value; - (void)removeCourses:(NSSet *)value; 当使用上面的访问器添加或删除对象时,我需要运行一些其他代码 我实际

我有一个带有CoreDataGeneratedAccessor的NSManagedObject子类,如下所示:

- (void)addCoursesObject:(Course *)value;
- (void)removeCoursesObject:(Course *)value;
- (void)addCourses:(NSSet *)value;
- (void)removeCourses:(NSSet *)value;
当使用上面的访问器添加或删除对象时,我需要运行一些其他代码

我实际上希望在实现文件中执行类似的操作:

-(void)addCoursesObject:(Course *)value {
    [super addCoursesObject:value];
     … my additional code here … }
但是super没有意义,因为NSManagedObject没有“-addCourseObject”。在集合中添加一个观察者似乎是一种方法,但我更愿意实现自己的访问器,然后定义它的工作方式,就像实现@synthetic访问器时超越默认行为一样

有没有一种方法可以调用原始行为,类似于上面的“[super…”行

想法?其他方法


谢谢。

您不能覆盖访问器,您只需在.m文件中写入自己的访问器即可


在数据模型编辑器中,如果选择关系,可以选择“将Objective-C 2.0实现复制到剪贴板”从上下文菜单。这将为您提供访问器的功能框架。然后您可以轻松自定义它们。

复制到剪贴板功能似乎在Xcode 4中消失了。另一种方法是转到代码段库(视图/实用程序/代码段库)并拖动其中一个“核心数据xxx访问器”在.m文件中。您将获得如下方法:

- (void)add<#Capitalized relationship name#>Object:(<#Relationship destination class#> *)value {    
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value count:1];
    [self willChangeValueForKey:@"<#Relationship name#>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [[self primitiveValueForKey:@"<#Relationship name#>"] addObject:value];
    [self didChangeValueForKey:@"<#Relationship name#>" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [changedObjects release];
}
-(void)addObject:(*)值{
NSSet*changedObjects=[[NSSet alloc]initWithObjects:&值计数:1];
[self Will ChangeValueForkey:@”“with setMutation:NSKeyValueUnionSetMutation Using对象:changedObjects];
[[self-primitiveValueForKey:@”“]addObject:value];
[self-didChangeValueForKey:@“带设置突变:NSKeyValueUnionSetMutation使用对象:changedObjects];
[变更对象发布];
}

您需要替换,然后添加您的自定义代码(由于使用ARC,我还必须删除[changedObjects release])

关于复制的好提示。我在文档中找到了足够多的东西来拼凑一些有用的东西,但是如果我识别出它首先要做的事情的菜单项,我将节省大量的工作。因此,下次,我将进行适当的武装。非常感谢大家,TechZen.19k+1。;)不幸的是,复制上下文菜单在Xcode 5中消失了。请小心这个method。自从我发布了这个答案后,我遇到了一些没有实际删除对象的删除方法的问题。当我删除该方法并将自定义代码移动到调用级别时,它再次起作用。我现在怀疑苹果可能没有保持这些代码段的最新状态,这样做可能是个坏主意。