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

この辞書には、アルファベットがキーで、1つ以上の人物オブジェクトが値として配列されています。 personobjectには、名前、複数の電子メール、複数の電話番号があります。私の出力をNSLogからフォーマットする

私の説明では、メールと電話番号をカンマ区切りの文字列に結合して結果を出力しました。

-(NSString *) description { 

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

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

私は

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

しかしとき全体adressboekオーバーIループが人物オブジェクトが

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

どのようにすることができ、上記のように返されませんを取得

NSLog(@"%@",waldo); 

私の出力をフォーマットしてください。

答えて

0

にNSArrayクラスの-descriptionメソッドのドキュメントは、プロパティリストとしてフォーマット配列の説明を返しますと言います。私はその実装があなたのPersonObjectからの記述を受け取り、すべての改行文字を '/'文字に続けて 'n'文字に変換すると考えています。これにより、有効なプロパティリスト形式のままで、文字列に改行が表示されます。

あなたが望むものを得るには配列を手作業でループする必要があると思います。 %@書式指定子を使用してアドレス帳全体を印刷する場合は、NSArrayをサブクラス化し、辞書に格納する配列に対して独自の-descriptionメソッドを提供する必要があります。

+0

personobjectsをStringに結合して、それがうまくいくようにしました。 NSString * joinedpersons = [[アドレス帳オブジェクトのキー:key] componentsJoinedByString:@ "\ n"]; forループで-descriptionを使用できませんでした。 – Stofke

0

タイプキャストする必要があります。

以下のコードでは、PersonObjectをpersonobjectクラスの名前に変更する必要があります。

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

同じ結果を返します – Stofke

+0

ええと、私は今、-descriptionがインスタンスメソッドではなくクラスメソッドであることを見ています。 NSStringFromPersonObject(NSStringFromCGRect ...と同じように)とNSStringカテゴリを作成するか、カスタム専用の(NSString *)プリントアウトメソッドを作成してください。 –

関連する問題