从方法内部获取消息接收者的字符串名称

时间:2011-11-16 07:27:28

标签: objective-c

例如,我有对象部门和财产员工。我想要方法

- (NSString *)propertyName;

这样

NSLog(@"%@", [department.employees propertyName]);

将打印“员工”。

有可能吗?

修改 我有一个CoreData托管对象部门,其关系称为employees。 所以在课堂上我有:

@property (nonatomic, retain) NSSet *employees;

我想用上面描述的方法在NSSet上创建类别。目标是实现类似这样的东西

[department.employees addObject:newEmployee];

我醒悟了这个想法,我认为obj-c足够强大,可以做到!

编辑2:

- (void)addObject:(id)object{
    id entityObject = #some magic here#;
    NSString *setName = #some magic here#;
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:&object count:1];
    [entityObject willChangeValueForKey:setName withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [[entityObject primitiveValueForKey:setName] addObject:object];
    [entityObject didChangeValueForKey:setName withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [changedObjects release];
}

哇!看起来真的不那么简单)

2 个答案:

答案 0 :(得分:0)

不,您必须手动初始化propertyName,除非您乐意使用预定义的宏__FILE__,其中包含.m文件后缀。

答案 1 :(得分:0)

首先,我不知道如何通过回答您的实际问题来实现您的目标。但是,Core Data已经为您提供了所需内容 - 请参阅here

顺便说一下,你不应该改变NSSet。这是NSMutableSet的工作。