Что такое эквивалент Objective C для "toString ()", для использования с NSLog? - PullRequest
167 голосов
/ 09 июля 2009

Есть ли метод, который я могу переопределить в моих пользовательских классах, чтобы при вызове

      NSLog(@"%@", myObject) 

он печатал поля (или что я считаю важным) моего объекта?Я думаю, что я ищу Objective-C эквивалент Java toString().

Ответы [ 5 ]

247 голосов
/ 09 июля 2009

Это метод экземпляра description, объявленный как:

- (NSString *)description

Вот пример реализации (спасибо grahamparks):

- (NSString *)description {
   return [NSString stringWithFormat: @"Photo: Name=%@ Author=%@", name, author];
}
35 голосов
/ 09 июля 2009

Добавьте это к @implementation вашего класса Фото:

- (NSString *)description {
   return [NSString stringWithFormat:@"Photo: Name=%@ Author=%@",name,author];
}
24 голосов
/ 09 июля 2009

Вы можете переопределить метод описания NSObject:

- (NSString *)description

На предмет ведения журнала я рекомендую сообщение в блоге для лучшей регистрации в Objective-C.

13 голосов
/ 18 января 2013

Вы можете использовать две функции.

- (NSString*)description

Это будет отображаться, когда вы ставите объект как I.E. параметр для NSLog. Другая функция описания:

- (NSString*)debugDescription

Это будет вызвано, когда вы введете po anInstanceOfYourClass в командном окне отладки. Если в вашем классе нет функции debugDescription, будет вызвана просто description.

Обратите внимание, что в базовом классе NSObject реализован description, но он довольно прост: он отображает только адрес объекта. Вот почему я рекомендую вам внедрить description в любом классе, из которого вы хотите получить информацию, особенно если вы используете метод description в своем коде. Если вы используете description в своем коде, я предлагаю вам также реализовать debugDescription, что также сделает debugDescription более подробным.

1 голос
/ 12 февраля 2014

Это выведет доступные голоса:

    NSLog((@"speechVoices:%", [[AVSpeechSynthesisVoice speechVoices] description] ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...