Las categorías proporcionan la capacidad de agregar funcionalidad a un objeto sin subclasificar o cambiar el objeto real. Una herramienta útil, a menudo se utilizan para agregar métodos a clases existentes, como NSString
o tus propios objetos personalizados.
Inicie Xcode y haga clic en Archivo> Nuevo> Proyecto. Elija una aplicación de vista única de iOS en la ventana y haga clic en "Siguiente". Nombre su producto "Categorías" e ingrese un nombre para su Identificador de empresa, como "com.companyName.categories". Elija la familia de dispositivos iPhone y haga clic en "Siguiente". Elija una ubicación para almacenar su proyecto y haga clic en "Crear".
Ahora que su proyecto está configurado, vamos a crear una categoría que agregue funcionalidad adicional a la NSString
clase. Haga clic en Archivo> Nuevo> Archivo y elija una categoría de Cocoa Touch Objective-C en la ventana. Haga clic en Siguiente." Nombre su categoría "RemoveNums" y seleccione NSString
en el menú desplegable "Categoría en" (es posible que tenga que escribir esto manualmente). Haga clic en "Siguiente" seguido de "Crear".
De vuelta en su proyecto de Xcode, haga clic en "NSString + RemoveNums.h" para ver el archivo de encabezado de la nueva categoría. Agregue el siguiente código a la interfaz para declarar el método..
@interface NSString (RemoveNums) - (NSString *) removeNumbersFromString: (NSString *) cadena; @fin
Haga clic en "NSString + RemoveNums.m" para ver el archivo de implementación de la categoría. Agregue el siguiente código para crear un método que elimine todos los números de una NSString
. Primero definimos un NSCharacterSet
de los números del cero al nueve que usaremos como referencia para comparar con la cadena de entrada original. En este caso, la cadena original "ABC 123" tendrá los números "123" eliminados de la cadena porque el método de categoría usa la NSString
método stringByTrimmingCharactersInSet:
.
- (NSString *) removeNumbersFromString: (NSString *) cadena NSString * trimmedString = nil; NSServicio de caracteres de NS * númerosSet = [Conjunto de caracteres de Caracteres de NSSetConControl de caracteres: @ "0123456789"]; trimmedString = [string stringByTrimmingCharactersInSet: numbersSet]; return recortadoString;
Haga clic en "ViewController.h" e importe la categoría agregando el siguiente código.
#import "NSString + RemoveNums.h"
Haga clic en "ViewController.m" y agregue el siguiente código a la viewDidLoad
método. La variable local stringWithNums
Contiene una combinación de letras y números. La siguiente línea toma la variable de cadena y la ejecuta a través del método de categoría removeNumbersFromString
. Finalmente, NSLog
genera el valor devuelto de la cadena recién recortada sin ningún número.
NSString * stringWithNums = @ "ABC 123"; NSLog (@ "stringWithNums ->% @", stringWithNums); stringWithNums = [stringWithNums removeNumbersFromString: stringWithNums]; NSLog (@ "recortado stringWithNums ->% @", stringWithNums);
Haga clic en Producto> Ejecutar, o haga clic en la flecha "Ejecutar" en la esquina superior izquierda para probar el código. Observe que la consola muestra la cadena de entrada original, "ABC 123", así como la cadena después de que haya sido alterada por el método de categoría y los números hayan sido eliminados.
La subclasificación es una forma de agregar funcionalidad a un objeto, pero evitar la subclase innecesaria mediante el uso de una categoría ayudará a reducir la cantidad de código y mantendrá sus proyectos más organizados. Hay una serie de escenarios en los que usar una categoría es beneficioso. Comparte los escenarios de tu categoría en los comentarios a continuación..