2013-11-11 3 views
4

Я пришел с php-фона ... так что мне было интересно, есть ли такая вещь, как var_dump для Xcode, я знаю о NSLog, но я хочу, чтобы она действовала как var_dump.Есть ли var_dump в Xcode?

Есть ли функция для этого?

+0

Как насчет NSLog (@ "% @", [описание MYVAR])? – Macondo2Seattle

+0

Возможный дубликат [Как сбрасывать данные, хранящиеся в объекте-c (NSArray или NSDictionary)] (http://stackoverflow.com/questions/289241/how-to-dump-data-stored-in-objective-c- object-nsarray-or-nsdictionary) – jycr753

+0

@BlackRider делает это для массивов? –

ответ

2

В коде:

NSLog(@"%@", myVar); 

что эквивалентно

NSLog(@"%@", [myVar description]); 

Или в отладчике: щелкните правой кнопкой мыши на переменной и выберите "Печать".

Если вы хотите проверить объекты своих классов таким образом, вам необходимо реализовать метод -(NSString *)description для этих классов.

2

NSObject определяет метод description, который предоставляет описание объекта. Реализация по умолчанию просто печатает имя класса, но оно обычно переопределяется подклассами, чтобы обеспечить более содержательное описание их содержимого.

Это, например, случай NSArray и NSDictionary, реализация которого создает NSString, представляющий объекты, хранящиеся в коллекции.

Когда вы

NSLog(@"%@", anObject); 

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

Также в отладчике вы можете сделать

po anObject 

для достижения того же результата.

В нижней строке, если вам нужно предоставить представление пользовательского класса, который вы внедрили, путь к переопределению description.

5

В быстром вы можете использовать дамп (var), который использует зеркало для самоанализа и полезен для классов.

Например:

let pet = Pet(name:"Max", age: 4) 
let adam = Person(name:"Adam", age: 30, pet:pet) 

print("\(pet)") 
print("\(adam)") 
print("======") 
dump(pet) 
dump(adam) 

Выход будет:

Pet 
Person 
====== 
▿ Pet #0 
    - name: "Max" 
    - age: 4 
▿ Person #0 
    - name: "Adam" 
    - age: 30 
    ▿ pet: Optional(Pet) 
    ▿ some: Pet #1 
     - name: "Max" 
     - age: 4 
Смежные вопросы