Создать метод printMe для класса Objective C? - PullRequest
0 голосов
/ 05 сентября 2010

У меня есть несколько сущностей, содержащих значения для моей программы. Например. сущность "Person" имеет синтезированные свойства для значений "имя", "возраст", "адрес" и т. д.

Я хочу создать метод "printMe" в Entity, чтобы при вызове этого метода в консоль выводились вышеприведенные свойства, такие как \ nPropertyName: Value.

Я уже делал это с Core Data Entities, используя что-то вроде этого:

- (void) printMe {

NSEntityDescription *entity = [NSEntityDescription entityForName:@"NewAirline" inManagedObjectContext:[self managedObjectContext]];

for (NSString *attr in [entity attributesByName]) {
    //[object setValue:@"n/a" forKey:attr];

    NSLog(@"%@:%@", attr, [self valueForKey:attr]);
}
NSLog(@"*************** end ***************\n");    

}

В данном случае объект, который у меня есть, не является базовыми данными, и я не могу использовать attributesByName. Но он все равно должен соответствовать значению ключа, поэтому я думаю, что есть способ обойти это.

Моя сущность имеет более 20 свойств, и я хотел бы не делать это вручную, перечисляя каждое свойство и называя его по имени в NSLog.

Заранее спасибо за любую помощь:)

1 Ответ

1 голос
/ 05 сентября 2010

Вы можете использовать Api Objective-C времени выполнения.Функция class_copyPropertyList предоставляет вам все объявленные свойства данного класса.Затем вы можете получить их имена и т. Д., Используя дополнительные функции времени выполнения, такие как property_getAttributes или property_getName.Используя это имя, вы можете получить доступ к значению в соответствии с KVC.

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