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

Objective c 从方法内部获取消息接收器的字符串名称,objective-c,Objective C,例如,我有目标部门和财产员工。我想要一种方法 - (NSString *)propertyName; 以致 NSLog(@"%@", [department.employees propertyName]); 将打印员工 可能吗 编辑: 我有一个CoreData管理的对象部门,与名为employees的关系。 所以在课堂上我有: @property (nonatomic, retain) NSSet *employees; 我想使用上述方法在NSSet上创建类别。我们的目标是实现这样的东西

例如,我有目标部门和财产员工。我想要一种方法

- (NSString *)propertyName;
以致

NSLog(@"%@", [department.employees propertyName]);
将打印员工

可能吗

编辑: 我有一个CoreData管理的对象部门,与名为employees的关系。 所以在课堂上我有:

@property (nonatomic, retain) NSSet *employees;
我想使用上述方法在NSSet上创建类别。我们的目标是实现这样的东西

[department.employees addObject:newEmployee];
我从这个想法中醒来,我认为obj-c足够强大,可以做到这一点

编辑2:


哇!看起来它真的不是那么简单。不,你必须手动初始化propertyName,除非你愿意使用预定义的宏文件,其中包括.m文件后缀。

首先,我不知道如何通过回答你的实际问题来实现你的目标。然而,核心数据已经为您提供了您想要的-请参阅

顺便说一句,您不应该对NSSet进行变异。这是NSMutableSet的工作

- (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];
}