Как написать правильный метод описания для класса? - PullRequest
24 голосов
/ 26 января 2012

Как написать правильный метод описания для класса?

Я реализовал

- (NSString *)description {
     NSString *descriptionString = [NSString stringWithFormat:@"Name: %@ \n Address: %@ \n", self.name, self.address];
     return descriptionString;

}

Все хорошо, если я вызову описание для моего объекта.Но если у меня есть массив объектов и я вызываю описание, я получаю:

"Имя: Алекс \ n Адрес: какой-то адрес \ n",

ЧтоЯ хотел бы получить это

"Имя: Алекс

Адрес: какой-то адрес"

Ответы [ 2 ]

18 голосов
/ 05 февраля 2012

Кроме того, вы можете использовать возврат каретки \r, который также окажется в новой строке (даже в описании NSArray)

12 голосов
/ 26 января 2012

Я копаю немного больше в каркасах iOS, и я заметил, что стандартное поведение описания SDK для iOS - не помещать "\ n", а ";".

Пример:

    UIFont *font = [UIFont systemFontOfSize:18];
    NSLog(@"FontDescription:%@",[font description]);

    NSMutableArray *fontsArray = [NSMutableArray arrayWithCapacity:0];
    for(int index = 0; index < 10; index++) {
        [fontsArray addObject:font];
    }
    NSLog(@"FontsArrayDescription:%@",[fontsArray description]);

Выход:

FontDescription: font-family: "Helvetica"; Вес шрифта: нормальный; стиль шрифта: нормальный; размер шрифта: 18px

FontsArrayDescription: (

 "<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px",
 "<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px",
 "<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px",
 "<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px",
 "<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px",    
 "<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px",
 "<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px",
 "<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px",
 "<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px",
 "<UICFFont: 0x6e2d8b0> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 18px"  

)

Поэтому я решил использовать тот же подход с моим классом.

- (NSString *)description {
     NSString *descriptionString = [NSString stringWithFormat:@"Name: %@; Address: %@;", self.name, self.address];
     return descriptionString;

}

И результат будет:

"Имя: Алекс; Адрес: какой-то адрес;"

Для объекта сам.

objecsArrayDescription: (

 "Name:Alex; Address: some address;",
 "Name:Alex; Address: some address;",
 "Name:Alex; Address: some address;",
 "Name:Alex; Address: some address;",
 "Name:Alex; Address: some address;",
 "Name:Alex; Address: some address;",
 "Name:Alex; Address: some address;",
 "Name:Alex; Address: some address;",
 "Name:Alex; Address: some address;",
 "Name:Alex; Address: some address;" 

)

Для массива объектов.

...