Le categorie offrono la possibilità di aggiungere funzionalità a un oggetto senza creare sottoclassi o modificare l'oggetto reale. Uno strumento utile, sono spesso utilizzati per aggiungere metodi a classi esistenti, come ad esempio NSString
o i tuoi oggetti personalizzati.
Avvia Xcode e fai clic su File> Nuovo> Progetto. Scegli un'applicazione iOS con vista singola dalla finestra e fai clic su "Avanti". Assegna un nome al prodotto "Categorie" e inserisci un nome per l'identificatore della tua azienda, ad esempio "com.companyName.categories". Scegli la famiglia di dispositivi iPhone e fai clic su "Avanti". Scegli una posizione per archiviare il tuo progetto e fai clic su "Crea".
Ora che il tuo progetto è impostato, creiamo una categoria che aggiunge funzionalità aggiuntive a NSString
classe. Fai clic su File> Nuovo> File e scegli una categoria Cocoa Touch Objective-C dalla finestra. Fai clic su "Avanti". Assegna un nome alla categoria "RemoveNums" e seleziona NSString
dal menu a discesa "Categoria su" (potrebbe essere necessario inserirlo manualmente). Fai clic su "Avanti" seguito da "Crea".
Tornando al progetto Xcode, fai clic su "NSString + RemoveNums.h" per visualizzare il file di intestazione della nuova categoria. Aggiungere il seguente codice all'interfaccia per dichiarare il metodo.
@interface NSString (RemoveNums) - (NSString *) removeNumbersFromString: (NSString *) stringa; @fine
Fai clic su "NSString + RemoveNums.m" per visualizzare il file di implementazione della categoria. Aggiungere il seguente codice per creare un metodo che rimuoverà tutti i numeri da un NSString
. Per prima cosa definiamo un NSCharacterSet
dei numeri da zero a nove che useremo come riferimento per confrontarci con la stringa di input originale. In questo caso, la stringa originale "ABC 123" avrà i numeri "123" rimossi dalla stringa perché il metodo di categoria utilizza il NSString
metodo stringByTrimmingCharactersInSet:
.
- (NSString *) removeNumbersFromString: (NSString *) string NSString * trimmedString = nil; NSCharacterSet * numbersSet = [NSCharacterSet characterSetWithCharactersInString: @ "0123456789"]; trimmedString = [string stringByTrimmingCharactersInSet: numbersSet]; return trimmedString;
Fai clic su "ViewController.h" e importa la categoria aggiungendo il seguente codice.
#import "NSString + RemoveNums.h"
Fare clic su "ViewController.m" e aggiungere il seguente codice al viewDidLoad
metodo. La variabile locale stringWithNums
contiene una combinazione di lettere e numeri. La riga successiva prende la variabile string e la esegue attraverso il metodo category removeNumbersFromString
. Finalmente, NSLog
restituisce il valore restituito della stringa appena tagliata senza numeri.
NSString * stringWithNums = @ "ABC 123"; NSLog (@ "stringWithNums ->% @", stringWithNums); stringWithNums = [stringWithNums removeNumbersFromString: stringWithNums]; NSLog (@ "trimmed stringWithNums ->% @", stringWithNums);
Fai clic su Prodotto> Esegui o fai clic sulla freccia "Esegui" nell'angolo in alto a sinistra per testare il codice. Notare che la console mostra la stringa di input originale, "ABC 123", nonché la stringa dopo che è stata modificata dal metodo di categoria e che i numeri sono stati rimossi.
La sottoclasse è un modo per aggiungere funzionalità a un oggetto, ma evitare una sottoclasse non necessaria utilizzando una categoria aiuterà a ridurre la quantità di codice e manterrà i progetti più organizzati. Ci sono una serie di scenari in cui l'utilizzo di una categoria è vantaggioso. Condividi i tuoi scenari di categoria nei commenti qui sotto.