2012-02-27 81 views
0
-(void)resultaat{ 
    for(id key in [addressbook allKeys]){ 
     NSLog(@"\n%@ \n-\n %@ ", key,[addressbook objectForKey:key] ); 
    } 
} 

我有一个方法resultaat循环一个可变的字典,这个字典有alfabet作为键和一个或多个人对象在一个数组作为值。该personobject有一个名称,多个电子邮件,多个电话号码。格式化我的输出从NSLog

在我使用描述的人类中,将邮件和电话号码加入逗号分隔的字符串并输出结果。

-(NSString *) description { 

    NSString *joinedmails = [mails componentsJoinedByString:@","]; 
    NSString *joinedtelnrs = [telnrs componentsJoinedByString:@","]; 

    return [NSString stringWithFormat:@"\n Naam: %@ \n email: %@ \n telefoonnr: %@",naam,joinedmails, joinedtelnrs]; 
} 

这个工作正常,如果我做例如

NSLog(@"%@",waldo); 

我得到

2012-02-27 17:39:59.355 Adresboek[5162:503] 
    Naam: Waldo Odlaw 
    email: [email protected],[email protected] 
    telefoonnr: 123456789,987654321 

但是,当我遍历人物对象不返回像上面

-(void)resultaat{ 
for(id key in [addressbook allKeys]){ 
    NSLog(@"\n%@ \n-\n %@ ", key,[addressbook objectForKey:key] ); 
} 

}

2012-02-27 17:39:59.407 Adresboek[5162:503] 
    w 
    - 
     (
     "\n Naam: Waldo Odlaw \n email: [email protected],[email protected] \n telefoonnr: 123456789,987654321", 
     "\n Naam: Wuno Odlaw \n email: [email protected],[email protected] \n telefoonnr: 2468101214,1412108642" 
    ) 
    2012-02-27 17:39:59.408 Adresboek[5162:503] 
    j 
    - 
     (
    ) 

整个adressboek我怎样才能格式化我的输出。

回答

0

为NSArray类的-description方法的文档说,它将返回格式化为一个属性列表中的数组的描述。我怀疑它的实现是从你的PersonObject中获取-description,并将所有换行符转换为一个'/'字符后跟一个'n'字符。这样它就会在字符串中显示换行符,同时仍然保持有效的属性列表格式。

为了得到你想要的东西,我想你需要手动循环数组来建立一个看起来像你想要的样子的字符串。如果要使用%@格式说明符打印整个地址簿,则可能需要继承NSArray的子​​类,并为您存储在字典中的数组提供自己的-description方法。

+0

我将personobjects加入到了String中,这种方式起作用。 NSString * joinedpersons = [[addressbook objectForKey:key] componentsJoinedByString:@“\ n”]; 我无法使用-description来使用for循环。 – Stofke 2012-02-27 22:51:59

0

你将不得不强制转换。

在下面的代码中,您必须将PersonObject更改为personobject类的名称。

-(void)resultaat { 
    for(id key in [addressbook allKeys]){ 
     NSLog(@"\n%@ \n-\n %@ ", key,(PersonObject *)[addressbook objectForKey:key] ); 
    } 
} 
+0

它返回相同的结果 – Stofke 2012-02-27 22:19:19

+0

嗯,我现在看到,-description是一个类方法,而不是一个实例方法。您至少还有两个 - 不太优雅的选项:使用NSStringFromPersonObject创建一个NSString类别(类似于让NSStringFromCGRect ...)或创建一个自定义专用 - (NSString *)打印输出方法。 – 2012-02-27 22:31:12