2012-02-27 82 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