Метод -description для NSArray будет вкладывать рекурсивные вызовы, как в:
2009-05-15 14:28:09.998 TestGUIProject[29695:813] (
a, // Array1 item 1
( // Array2, a second array, nicely indented another 4 spaces
a // Item in Array2
) // End of Array2
) // End of Array1
Я хочу сделать что-то подобное для своих собственных классов (используя скрипт, который я пишу).
Чего я не знаю, так это как добавить дополнительный уровень отступа, когда рекурсивно вызываемый объект добавляет новые собственные строки.
У меня есть следующее:
- (NSString *)description {
return [NSString stringWithFormat:@"{{{\n"
@" prop1: %@\n"
@" prop2: %@\n"
@" prop3: %@\n"
@" prop4: %@\n"
@"}}}",
self.prop1,
self.prop2,
self.prop3,
self.prop4];
}
Но это выходит из строя, как только одно из свойств представляет собой NSArray или другой объект, использующий тот же формат описания, потому что он плохо вкладывается.
Вместо этого вы получаете:
2009-05-15 14:25:50.899 TestApp[29636:813] {{{
prop1: SomeValue1
prop2: ( // Prop 2 is an Array of strings
"String1", // Note no additional level of indentation as in the NSArray example
"String2",
"String3",
"String4"
)
prop3: SomeValue3
prop4: SomeValue4
}}}
Как мне получить дополнительные уровни вложенности?