gpt4 book ai didi

cocoa - 扩展 CoreDataGenerateAccessors 行为

转载 作者:行者123 更新时间:2023-12-03 16:23:47 25 4
gpt4 key购买 nike

我有一个带有 CoreDataGenerateAccessors 的 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”。在 Courses NSSet 上添加观察者似乎可能是一种方法,但我宁愿只实现自己的访问器,然后定义它的工作方式,就像实现 @synthesized 访问器以超越默认行为一样。

有没有办法调用原始行为,类似于上面的“[super...”行?

想法?其他方法?

谢谢。

最佳答案

复制到剪贴板功能似乎在 Xcode 4 中消失了。另一种方法是进入代码片段库(View/Utilities/Code Snippet Library)并将“Core Data xxx Accessors”之一拖到您的 .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];
}

并且您需要替换 <#大写关系名称#>、<#关系目标类#> 和 <#关系名称#>,然后添加自定义代码。 (因为我使用的是 ARC,所以我还必须删除 [changedObjects release]。)

关于cocoa - 扩展 CoreDataGenerateAccessors 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com