2010-03-23 3 views
6

Mein Verständnis von Printf-ähnlichen Formatzeichenfolgen besteht darin, dass Sie jedem Konvertierungsbezeichner eine Mindestfeldbreite voranstellen können. Dies scheint nicht für Cocoa's %@ Specifier zu funktionieren. Beispiel:Funktioniert Cocoa's printf-Format nicht wie erwartet, wenn% @ conversion specifier und field width verwendet wird?

NSLog(@"'%[email protected]'", @"foo"); 
NSLog(@"'%5s'", [@"foo" UTF8String]); 

Ausgang:

… 'foo' 
… ' foo' 

Ist dies das gewünschte Verhalten?

+0

Ich würde es als einen Fehler melden: https://bugreport.apple.com/ –

+0

Erledigt: http://openradar.appspot.com/radar?id=213401 –

Antwort

1

% @ ist nur für objective-c Objekt. Daher ist die Feldbreite ungültig, wenn das Objekt kein NSString ist.

Ich wusste nicht, dass% 5 @ so formatiert ist wie% @.

+5

Cocoa Formatierungsfunktion ruft immer 'descriptionWithLocale:' (oder 'description') für das Objekt, um eine Zeichenfolgendarstellung zu erhalten. Diese Zeichenfolgendarstellung könnte zu einer gegebenen Feldbreite aufgefüllt werden. –

0

Der Formatbezeichner% @ wird nur durch die Beschreibung des Objekts ersetzt. Es macht keine Kürzung oder Auffüllung.

+0

Genau. Denkst du nicht, dass das falsches Verhalten ist? Oder meinen Sie, es gibt eine Dokumentation, die es so definiert, dass es sich anders verhält als andere Formatbezeichner? –

+0

@Nikolai: Ich mache keinen Wert Beurteilung darüber, ob es korrekt ist oder nicht, ich sagte nur, dass es so funktioniert :). –

Verwandte Themen