我来自 php 背景......所以我想知道是否有像var_dump
Xcode 这样的东西,我知道,NSLog
但我希望它表现得像var_dump
.
有这个功能吗?
在 swift 中,您可以使用 dump(var) ,它使用 mirror 进行自省并对类很有用。
例如:
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
NSObject
定义description
方法,该方法提供对象的描述。默认实现只打印类的名称,但它通常被子类覆盖以提供对其内容的更有意义的描述。
例如 和 的情况NSArray
,NSDictionary
它的实现产生一个NSString
表示存储在集合中的对象。
当你这样做
NSLog(@"%@", anObject);
description
在对象上自动调用以检索它的文本表示。
同样在调试器中你可以做
po anObject
达到同样的效果。
最重要的是,如果您需要提供您实现的自定义类的表示,那么要走的路是覆盖description
.
在代码中:
NSLog(@"%@", myVar);
这相当于
NSLog(@"%@", [myVar description]);
或者在调试器中:右键单击变量,然后选择“打印描述”。
如果您想以这种方式检查您自己的类的对象,则需要-(NSString *)description
为这些类实现该方法。