6

我来自 php 背景......所以我想知道是否有像var_dumpXcode 这样的东西,我知道,NSLog但我希望它表现得像var_dump.

有这个功能吗?

4

3 回答 3

7

在 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
于 2016-12-14T11:51:19.657 回答
2

NSObject定义description方法,该方法提供对象的描述。默认实现只打印类的名称,但它通常被子类覆盖以提供对其内容的更有意义的描述。

例如 和 的情况NSArrayNSDictionary它的实现产生一个NSString表示存储在集合中的对象。

当你这样做

NSLog(@"%@", anObject);

description在对象上自动调用以检索它的文本表示。

同样在调试器中你可以做

po anObject

达到同样的效果。

最重要的是,如果您需要提供您实现的自定义类的表示,那么要走的路是覆盖description.

于 2013-11-11T20:13:44.783 回答
2

在代码中:

NSLog(@"%@", myVar);

这相当于

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

或者在调试器中:右键单击变量,然后选择“打印描述”。

如果您想以这种方式检查您自己的类的对象,则需要-(NSString *)description为这些类实现该方法。

于 2013-11-11T20:10:03.420 回答