-(void)resultaat{
for(id key in [addressbook allKeys]){
NSLog(@"\n%@ \n-\n %@ ", key,[addressbook objectForKey:key] );
}
}
我有一个方法resultaat循环遍历一个可变字典,这个字典将alfabet作为键,并将数组中的一个或多个person对象作为值。人物对象有一个名字,多封电子邮件,多个电话号码。
在person类中,我使用说明将邮件和电话号码加入逗号分隔的字符串并输出结果。
-(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: waldo.odlaw@waldo.com,waldo.odlaw@gmail.com
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: waldo.odlaw@waldo.com,waldo.odlaw@gmail.com \n telefoonnr: 123456789,987654321",
"\n Naam: Wuno Odlaw \n email: wuno.odlaw@wuno.com,wuno.odlaw@gmail.com \n telefoonnr: 2468101214,1412108642"
)
2012-02-27 17:39:59.408 Adresboek[5162:503]
j
-
(
)
如何格式化输出。
答案 0 :(得分:0)
你必须进行类型转换。
在下面的代码中,您必须将PersonObject更改为personobject类的名称。
-(void)resultaat {
for(id key in [addressbook allKeys]){
NSLog(@"\n%@ \n-\n %@ ", key,(PersonObject *)[addressbook objectForKey:key] );
}
}
答案 1 :(得分:0)
NSArray类的-description
方法的文档说它将返回格式化为属性列表的数组的描述。我怀疑它的实现是从你的PersonObject中获取-description并将所有换行符转换为'/'字符后跟'n'字符。这样它就会在你的字符串中显示换行符,同时仍然是有效的属性列表格式。
为了获得你想要的东西,我认为你需要手动循环遍历数组,以构建一个看起来像你想要的字符串。如果要使用%@格式说明符打印整个地址簿,则可能需要子类化NSArray并为存储在字典中的数组提供自己的-description
方法。