Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
Klassen, Teil 3 - description

Einzelne Variablen einer Klasse auszugeben ist für Sie keine Herausforderung mehr, das haben Sie schon gelernt. Es ist auch wirklich sehr einfach:
NSLog(@"Name: %@",[myPerson name]);
NSLog(
@"Alter: %d",[myPerson age]);
Aber haben Sie auch schon Mal probiert, das gesamte Objekt auf der Konsole auszugegeben, etwa so:
NSLog(@"Person: %@",myPerson);
Das Resultat ist wahrscheinlich nicht wie erwartet, aber seien Sie mal ehrlich, was haben Sie erwartet?
stacks_image_8AF5DD6B-BF23-4CD7-8E49-70F55ACFE8A8
Das sieht jetzt irgendwie aus wie eine Speicheradresse, vielleicht wollten Sie genau das sehen, wahrscheinlich aber ganz etwas anderes. Es wird Sie überraschen, aber das, was die Klasse ausgibt, wenn sie auf dieser Art angesprochen wird, können Sie ändern. Das Geheimnis liegt in der Methode description jeder Klasse. Noch haben Sie diese Methode nicht implementiert, also verwendet die Klasse eine Methode, die sie von NSObject geerbt hat. Was dort ausgegeben wird, haben Sie ja inzwischen gesehen.

Versuchen Sie zu Anfang etwas ganz einfaches, indem Sie die Person-Klasse um die description-Methode ergänzen.
-(NSString *)description
{
    return @"Ich bin eine Person";
}
stacks_image_B04842D6-FBBA-47BE-B510-9E3092E2768D
Das ist jetzt schon besser als zuvor. Noch nicht perfekt, aber ein Anfang und ein vielleicht brauchbares Resultat. Viel sinnvoller wäre es, das Personenobjekt würde mit einem Befehl all seine Daten ausgeben. Wenn Sie das wollen, sollte ihr Code in etwa so aussehen:
-(NSString *)description
{
    return[NSString stringWithFormat:@"Name :%@ ,Alter :%d",name,age];
}
stacks_image_DD9D6628-9635-4B91-9DD8-C8B4622C8CCE
Wie Sie sehen, kann die description also durchaus eingesetzt werden, um sinnvolle Informationen von einem Objekt zu bekommen.

nächste Seite