Get string id in Objective-C
Wie bekommen Sie die besten string-Darstellung eines id
Objekt?
Ist das folgende korrekt? Gibt es eine einfachere Möglichkeit?
id value;
NSString* valueString = nil;
if ([value isKindOfClass:[NSString class]]) {
valueString = value;
} else if ([value respondsToSelector:@selector(stringValue)]) {
valueString = [value stringValue];
} else if ([value respondsToSelector:@selector(description)]) {
valueString = [value description];
}
- Interessantes Konzept. Wie würden Sie in dieser Ausgabe?
- NSObject hat die Eigenschaft "description" gibt den Namen der Klasse string . Der derived object implementieren kann, die Beschreibung von NSObject-Protokoll zur Rückkehr nichts mehr meanigful.
- Ich habe zur Anmeldung eine id und ich möchte die log-Nachricht, um so hilfreich wie möglich.
- scheint perfekt!.
- Also für Ihre Klassen, die Sie überschreiben können: "Beschreibung", um wieder mehr Sinn.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
description
Methode ist Teil derNSObject
- Protokoll, so dass jedes Objekt in Kakao werden darauf reagieren; Sie können also nur sendendescription
:Auch
NSLog()
sendendescription
zu einem beliebigen Objekt als argument übergeben, um die%@
Planer.Beachten Sie, dass Sie sollten nicht diese Methode verwenden, für andere Zwecke als logging/debugging. Das heißt, Sie sollten sich nicht auf die Beschreibung der framework-Klasse mit einem bestimmten format zwischen Versionen des Frameworks und beginnen Dinge zu tun, wie den Bau von Objekten auf der Grundlage einer anderen Beschreibung string.
description
gibt schön formatierte Werte, wenn möglich.Da alle Objekte Erben von NSObject, Sie alle reagieren auf die Beschreibung der Methode. Einfach überschreiben Sie diese Methode in Ihren Klassen zu erhalten Ihren gewünschten Ergebnis.
Die Beschreibung der Methode in einigen Kakao-Klassen, wie NSNumber rufen Sie die Methode stringValue intern. Zum Beispiel...
...den gleichen Ausgang:
Ich mag meine schön Aussehen: manchmal Xcode Streifen, die das Zeilenende zu anderen Zeiten nicht, so YMMV: