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

标签 ios objective-c nsmutablearray

我创建了一个自定义对象,其中定义了 3 个属性。我创建对象并将值分配给这些属性。之后我将该对象放入 NSMutable Array。我知道我可以使用:

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

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

这是代码,我正在使用: 人是我的自定义对象。

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);

最佳答案

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

-(NSString *)description{

    return @"FirstName: %@, LastName: %@, E-mail: %@", 
                        _firstName, _lastName, _email;
}

通过这种方式,您可以始终打印 NSArray 中的对象,但您将返回您之前在特定对象的描述方法中定义的值,而不是内存描述。

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

NSLog(@"FirstName: %@, LastName: %@, E-mail: %@", 
                       obj.firstname, obj.lastname, obj.email);

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

关于ios - 如何打印出(NSLog)添加到 NSMutableArray 的自定义对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19340423/

相关文章:

ios - GLKit的-drawRect : is not called during screen rotation

c++ - 在不同平台上从 stringstream 解析数字时的行为不一致

iphone - 导航栏出现在带有新 iOS7 SDK 的 View 上

ios - 使用 NSFetchedResultsController 即时创建部分

iphone - 仪器处理的 NSMutableArray 泄漏警告

ios - NSMutableArray 不存储任何对象

c++ - 如何将 Objective-C++ 对象添加到 NSMutableDictionary?

ios - Swift - 访问地址簿以获取数字数组

javascript - 在 iOS 设备(移动版 Safari)上以编程方式选择输入字段中的文本

objective-c - 如何使复选框单元格中的文本能够被编辑?