Получить имя строки получателя сообщения изнутри метода - PullRequest
0 голосов
/ 16 ноября 2011

Например, у меня есть объект отдел и свойство сотрудников . Я хочу иметь метод

- (NSString *)propertyName;

такой, что

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

выведет «сотрудники».

Возможно ли это?

EDIT: У меня есть управляемый объект CoreData отдел с отношениями, называемыми сотрудниками. Так в классе у меня есть:

@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 голосов
/ 16 ноября 2011

Во-первых, я не понимаю, как ваша цель будет отвечать ответом на ваш настоящий вопрос.Тем не менее, Core Data уже дает вам то, что вы хотите - см. здесь .

Кроме того, вы не должны мутировать NSSet.Это работа для NSMutableSet.

0 голосов
/ 16 ноября 2011

Нет, вам придется инициализировать propertyName вручную, если вы не хотите использовать предопределенный макрос __FILE__, который будет включать суффикс файла .m.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...