NSArray の -description メソッドは、次のように再帰呼び出しをネストします。
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];
}
しかし、これは、プロパティの 1 つが 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
}}}
ネストの追加レベルを取得するにはどうすればよいですか?