Kategorien bieten die Möglichkeit, einem Objekt Funktionalität hinzuzufügen, ohne das eigentliche Objekt zu subklassifizieren oder zu ändern. Ein praktisches Werkzeug. Sie werden häufig verwendet, um vorhandenen Klassen Methoden hinzuzufügen, wie z NSString
oder Ihre eigenen benutzerdefinierten Objekte.
Starten Sie Xcode und klicken Sie auf Datei> Neu> Projekt. Wählen Sie eine iOS Single View-Anwendung aus dem Fenster aus und klicken Sie auf "Weiter". Benennen Sie Ihr Produkt "Kategorien" und geben Sie einen Namen für Ihre Firmenkennung ein, beispielsweise "com.companyName.categories". Wählen Sie die iPhone-Gerätefamilie aus und klicken Sie auf "Weiter". Wählen Sie einen Speicherort für das Projekt aus und klicken Sie auf "Erstellen".
Jetzt, da Ihr Projekt eingerichtet ist, erstellen wir eine Kategorie, die dem System zusätzliche Funktionen hinzufügt NSString
Klasse. Klicken Sie auf Datei> Neu> Datei und wählen Sie eine Cocoa Touch Objective-C-Kategorie aus dem Fenster aus. Weiter klicken." Benennen Sie Ihre Kategorie "RemoveNums" und wählen Sie NSString
aus dem Dropdown-Menü "Kategorie" (möglicherweise müssen Sie dies manuell eingeben). Klicken Sie auf "Weiter" und anschließend auf "Erstellen".
Klicken Sie in Ihrem Xcode-Projekt auf "NSString + RemoveNums.h", um die Header-Datei der neuen Kategorie anzuzeigen. Fügen Sie der Schnittstelle den folgenden Code hinzu, um die Methode zu deklarieren.
@interface NSString (RemoveNums) - (NSString *) removeNumbersFromString: (NSString *) Zeichenfolge; @Ende
Klicken Sie auf "NSString + RemoveNums.m", um die Implementierungsdatei der Kategorie anzuzeigen. Fügen Sie den folgenden Code hinzu, um eine Methode zu erstellen, mit der alle Zahlen aus einem entfernt werden NSString
. Zuerst definieren wir eine NSCharacterSet
von den Zahlen Null bis Neun, die wir als Referenz verwenden, um sie mit der ursprünglichen Eingabezeichenfolge zu vergleichen. In diesem Fall werden für die ursprüngliche Zeichenfolge "ABC 123" die Nummern "123" aus der Zeichenfolge entfernt, da die Kategoriemethode das verwendet NSString
Methode stringByTrimmingCharactersInSet:
.
- (NSString *) removeNumbersFromString: (NSString *) Zeichenfolge NSString * trimmedString = nil; NSCharacterSet * numbersSet = [NSCharacterSet characterSetWithCharactersInString: @ "0123456789"]; trimmedString = [string stringByTrimmingCharactersInSet: numbersSet]; return trimmedString;
Klicken Sie auf "ViewController.h" und importieren Sie die Kategorie, indem Sie den folgenden Code hinzufügen.
#import "NSString + RemoveNums.h"
Klicken Sie auf "ViewController.m" und fügen Sie den folgenden Code hinzu viewDidLoad
Methode. Die lokale Variable stringWithNums
enthält eine Kombination aus Buchstaben und Zahlen. Die nächste Zeile nimmt die Zeichenfolgenvariable und führt sie durch die Kategoriemethode removeNumbersFromString
. Endlich, NSLog
gibt den zurückgegebenen Wert der neu zugeschnittenen Zeichenfolge ohne Zahlen aus.
NSString * stringWithNums = @ "ABC 123"; NSLog (@ "stringWithNums ->% @", stringWithNums); stringWithNums = [stringWithNums removeNumbersFromString: stringWithNums]; NSLog (@ "getrimmte stringWithNums ->% @", stringWithNums);
Klicken Sie auf Produkt> Ausführen oder klicken Sie auf den Pfeil "Ausführen" in der oberen linken Ecke, um den Code zu testen. Beachten Sie, dass auf der Konsole die ursprüngliche Eingabezeichenfolge "ABC 123" sowie die Zeichenfolge angezeigt wird, nachdem sie durch die Kategoriemethode geändert wurde und die Zahlen entfernt wurden.
Unterklassifizierung ist eine Möglichkeit, einem Objekt eine Funktionalität hinzuzufügen. Durch die Verwendung einer Kategorie wird jedoch unnötige Unterklassifizierung vermieden. Dies verringert die Menge an Code und sorgt dafür, dass Ihre Projekte besser organisiert werden. Es gibt eine Reihe von Szenarien, in denen die Verwendung einer Kategorie von Vorteil ist. Teilen Sie Ihre Kategorieszenarien in den Kommentaren unten mit.