如何打印(NSLog)添加到NSMutableArray的自定义对象的属性

ice*_*omo 11 objective-c nsmutablearray ios

我有一个自定义对象,我创建了3个属性.我创建对象并将值分配给这些属性.之后我把那个物体放进去了NSMutable Array.我知道我可以用:

for (id obj in personArray)
{
             NSLog(@"obj: %@", obj);
}
NSLog(@"%@", personArray);
Run Code Online (Sandbox Code Playgroud)

告诉我我的数组中有哪些对象.但是我希望更深入一些,我希望能够看到每个对象的属性.我只是不确定如何定位它们.

这是我正在使用的代码:Person是我的自定义对象.

personObject = [[Person alloc]init];
[personObject setFirstName:firstName.text];
[personObject setLastName:lastName.text];
[personObject setEmail:emailAddress.text];

// add the person object to the array
// the array was alloc and init in a method above this code.
[personArray addObject:personObject];

for (id obj in personArray)
{
    NSLog(@"obj: %@", obj);
}

NSLog(@"%@", personArray);
Run Code Online (Sandbox Code Playgroud)

Ale*_*Cio 14

您必须description在Person类中使用该方法

-(NSString *)description{

    return @"FirstName: %@, LastName: %@, E-mail: %@", 
                        _firstName, _lastName, _email;
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以始终打印您所拥有的对象,NSArray但不会在内存描述中返回您在特定对象的描述方法中之前定义的值.

如果您只想NSArray使用使用占位符中的元素执行此操作:

NSLog(@"FirstName: %@, LastName: %@, E-mail: %@", 
                       obj.firstname, obj.lastname, obj.email);
Run Code Online (Sandbox Code Playgroud)

两者之间没有太大区别,但它更有用,因为一旦创建了描述方法,就不必重写它,只需要打印对象即可.


aru*_*vma 6

在所有类中使用描述方法都有一种简单的方法.

使用ICHObjectPrinter:

NSLog(@"Object description is %@",[ICHObjectPrinter descriptionForObject:person]);
Run Code Online (Sandbox Code Playgroud)

https://github.com/arundevma/ICHObjectPrinter