Форматирование моего вывода из NSLog - PullRequest
0 голосов
/ 27 февраля 2012
    -(void)resultaat{
    for(id key in [addressbook allKeys]){
        NSLog(@"\n%@ \n-\n  %@ ", key,[addressbook objectForKey:key]  );
    } 
}

У меня есть метод resultaat, который зацикливается на непостоянном словаре, этот словарь содержит алфавит в качестве ключей и один или несколько объектов-людей в массиве в качестве значения. У этого лица есть имя, несколько адресов электронной почты, несколько номеров телефонов.

В классе person я использовал description, чтобы объединить письма и номера телефонов в строки, разделенные запятыми, и вывести результаты.

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

Но когда я перебираю весь адресный адрес, объект person не возвращается, как указано выше

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

Как мне отформатировать вывод?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2012

В документации к методу -description класса NSArray говорится, что он вернет описание массива, отформатированного в виде списка свойств.Я подозреваю, что его реализация берет-описание от вашего PersonObject и преобразует все символы новой строки в символ '/', за которым следует символ 'n'.Таким образом, он показывает новую строку в ваших строках, оставаясь при этом в действительном формате списка свойств.

Чтобы получить то, что вы хотите, я думаю, вам нужно будет вручную перебрать массив, чтобы создать строку, которая выглядит так, какхочу это.Если вы хотите распечатать всю адресную книгу, используя спецификатор формата% @, то вам, вероятно, потребуется создать подкласс NSArray и предоставить собственный метод -description для массивов, которые вы храните в своем словаре.

0 голосов
/ 27 февраля 2012

Вам нужно будет ввести тип.

В приведенном ниже коде вы должны изменить PersonObject на имя вашего класса personobject.

-(void)resultaat {
   for(id key in [addressbook allKeys]){
       NSLog(@"\n%@ \n-\n  %@ ", key,(PersonObject *)[addressbook objectForKey:key]  );
   } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...