Les catégories permettent d'ajouter des fonctionnalités à un objet sans sous-classer ni modifier l'objet réel. Un outil pratique, ils sont souvent utilisés pour ajouter des méthodes aux classes existantes, telles que NSString
ou vos propres objets personnalisés.
Lancez Xcode et cliquez sur Fichier> Nouveau> Projet. Choisissez une application iOS Single View dans la fenêtre et cliquez sur "Suivant". Nommez votre produit "Catégories" et entrez un nom pour votre identifiant d'entreprise, tel que "com.companyName.categories". Choisissez la famille de périphériques iPhone et cliquez sur "Suivant". Choisissez un emplacement pour stocker votre projet et cliquez sur "Créer".
Maintenant que votre projet est configuré, créons une catégorie qui ajoute des fonctionnalités supplémentaires au NSString
classe. Cliquez sur Fichier> Nouveau> Fichier et choisissez une catégorie Cocoa Touch Objective-C dans la fenêtre. Cliquez sur Suivant." Nommez votre catégorie "RemoveNums" et sélectionnez NSString
dans le menu déroulant "Catégorie sur" (vous devrez peut-être taper ceci manuellement). Cliquez sur "Suivant" suivi de "Créer".
De retour dans votre projet Xcode, cliquez sur "NSString + RemoveNums.h" pour afficher le fichier d'en-tête de la nouvelle catégorie. Ajoutez le code suivant à l'interface pour déclarer la méthode.
@interface NSString (RemoveNums) - (NSString *) removeNumbersFromString: (NSString *) string; @fin
Cliquez sur "NSString + RemoveNums.m" pour afficher le fichier d'implémentation de la catégorie. Ajoutez le code suivant pour créer une méthode qui supprimera tous les nombres d’une NSString
. Nous définissons d'abord un NSCharacterSet
des nombres de zéro à neuf que nous utiliserons comme référence pour comparer avec la chaîne d’entrée originale. Dans ce cas, la chaîne d'origine "ABC 123" aura les numéros "123" supprimés de la chaîne car la méthode category utilise la NSString
méthode stringByTrimmingCharactersInSet:
.
- (NSString *) removeNumbersFromString: (NSString *) string NSString * trimmedString = nil; NSCharacterSet * numbersSet = [NSCharacterSet characterSetWithCharactersInString: @ "0123456789"]; trimmedString = [string stringByTrimmingCharactersInSet: numbersSet]; return trimmedString;
Cliquez sur "ViewController.h" et importez la catégorie en ajoutant le code suivant..
#import "NSString + RemoveNums.h"
Cliquez sur "ViewController.m" et ajoutez le code suivant à la viewDidLoad
méthode. La variable locale stringWithNums
contient une combinaison de lettres et de chiffres. La ligne suivante prend la variable chaîne et l'exécute à travers la méthode category removeNumbersFromString
. finalement, NSLog
renvoie la valeur retournée de la chaîne nouvellement coupée sans aucun chiffre.
NSString * stringWithNums = @ "ABC 123"; NSLog (@ "stringWithNums ->% @", stringWithNums); stringWithNums = [stringWithNums removeNumbersFromString: stringWithNums]; NSLog (@ "trimmed stringWithNums ->% @", stringWithNums);
Cliquez sur Produit> Exécuter, ou cliquez sur la flèche "Exécuter" située dans le coin supérieur gauche pour tester le code. Remarquez que la console affiche la chaîne de saisie d'origine, "ABC 123", ainsi que la chaîne après qu'elle ait été modifiée par la méthode category et que les numéros ont été supprimés..
Le sous-classement est un moyen d'ajouter des fonctionnalités à un objet, mais éviter les sous-classements inutiles en utilisant une catégorie contribuera à réduire la quantité de code et à mieux organiser vos projets. Il existe un certain nombre de scénarios dans lesquels l’utilisation d’une catégorie est bénéfique. Partagez vos scénarios de catégorie dans les commentaires ci-dessous.