Как я могу увидеть значения объекта в NSLog? - PullRequest
24 голосов
/ 28 февраля 2011

Предположим, у меня есть объект, содержащий некоторые данные.

Как я могу увидеть эти данные, используя NSLog?

Если кто-то не совсем уверен в моем вопросе, то можете спросить меня снова.

Ответы [ 8 ]

31 голосов
/ 28 февраля 2011

Если вы хотите видеть объекты NSArray, NSDictionary и т. Д., Вы можете напрямую напечатать как NSLog(@"%@",object);

Если это определенный пользователем объект, его необходимо отобразить, вызвав свойство (атрибут).

Пользовательский объект с именем объекта и такими свойствами, как

NSString *property1;
int property2;
NSMutableArray *property3;

Распечатайте их в консоли следующим образом:

NSLog(@"%@, %d, %@" object.property1,object.property2,object.property3);

20 голосов
/ 28 февраля 2011

Если вы реализуете метод -(NSString*)description в своем классе, вы можете использовать NSLog для вывода сводки данных. Конечно, вы также можете напрямую выводить любое свойство.

Например:

NSLog (@"%@ %d", object, object.integer);

Первая часть вызывает метод description и выводит его; вторая часть получает значение целочисленного свойства объекта и выводит его.

11 голосов
/ 28 февраля 2011

Каждый объект Objective-c (это NSObject) имеет свойство, называемое description.Так что, если вы хотите распечатать информацию о вашем классе, этот путь.* на консоль (в этом случае он напечатает ее дважды).

7 голосов
/ 08 мая 2014

Реализация description данного класса.

-(NSString*)description
{ return [NSString stringWithFormat:@"<%@> name: `%@` size: `%@`", NSStringFromClass(self), self.name, NSStringFromCGSize(self.size)]; }

NSLog(@"%@", object); // <Object> name: `Harry` size: `{2, 2}`
2 голосов
/ 07 июля 2014

Используйте этот класс https://github.com/arundevma/ICHObjectPrinter

NSLog(@"Object description is %@",[ICHObjectPrinter descriptionForObject:person]);

2 голосов
/ 28 февраля 2011

Я бы предложил следующее:

Объекты:

Для таких объектов, как Словарь, Массив, Строки, сделать это следующим образом:

NSLog(@"%@", object);

Дляосновные типы данных, такие как целые числа

NSLog(@"%i",intVal);

Для кодирования типов вы должны увидеть http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html

0 голосов
/ 28 февраля 2011

В дополнение к ответу Сатья, если вы хотите увидеть основные типы данных c, используйте спецификаторы формата. Например,% d для целого числа:

NSLog (@"My integer:%d", myObject.myInteger);

Полный список здесь:

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

0 голосов
/ 28 февраля 2011
NSLog(@"My object data:%@",[myObj someData]);
NSLog(@"My object Other data:%@",[myObj someOtherData]);

Или напрямую:

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