miércoles, 21 de agosto de 2013

OBJECTIVE C (NSString, NSArray, NSDictionary, ...)

(contenido parcial, pendiente de finalizar)
_________________________________________________________________________

Declaración de Variables

Se declara las variables con la siguiente sintaxis:

<tipo> <nombre_de_la_variable>;

Ejemplos:

NSInteger consignoInteger = -345; 
NSUInteger sinsignoInteger = 345;

NSInteger puede contener números con signo negativo.
NSUInteger no pueden contener números negativos.


El tipo de variable informa al compilador.

Tipos de variables en Objective-C:

int: enteros sin decimales (ejemplo: 20, -85)
float: números de coma flotante (números con decimales)
double: números de coma flotante que pueden contener un número elevado de dígitos.

NSString: cadenas con números, letras, símbolos.

ejemplos crear instancias de NSString: 
  • NSString *cadena = @"Contenido de la cadena";
  • NSString *cadena = [NSString stringWithString:@"Contenido de la cadena"];
  • NSString *cadena = [[NSString alloc] initWithString:@"Contenido de la cadena"];
ejemplos de como convertir cadenas en valores numéricos:

NSString *cadenaDeNumeros = @"258.45";
  • NSInteger valorNumerico = [cadenaDeNumeros integerValue]; 
  • CGFloat valorNumerico = [cadenaDeNumeros floatValue]; 
  • double valorNumerico = [cadenaDeNumeros doubleValue]; 

ejemplos de como buscar si existe una subcadena en una cadena de NSString:

NSString *cadena = @"Contenido del objeto instanciado";
NSString *aBuscar = @"objeto";
NSRange posicion = [cadena rangeOfString:aBuscar];

if (posicion.location == NSNotFound){
   // No existe cadena "objeto" en cadena
}else{
   NSLog(@"El texto %@ existe en %@ en la posición %lu", aBuscar, cadena, (unsigned long) posicion.location);
}



NSMutableString: cadenas que pueden ser modificadas - ampliada, reducida, sustutida, etc -.

ejemplos crear instancias de NSMutableString: 
  • NSMutableString *cadena = @"Contenido de la cadena mutable";
  • NSMutableString *cadena = [NSMutableString stringWithString:@"Contenido de la cadena mutable"];
  • NSMutableString *cadena = [[NSMutableString allocinitWithString:@"Contenido de la cadena mutable"];

ejemplo para modificar instancias de NSMutableString: 

NSMutableString *cadena = [[NSMutableString alloc] initWithString:@"Contenido inicial"];

[cadena appendString:@" esta cadena se añade al contenido];


// Si quiero cambiar  "se añade" del contenido del objeto cadena por "modificado"

[cadena replaceOccurrencesOfString:@"se añade"
withString:@"modificado"
options:NSCaseInsensitiveSearch 
posicion:NSMakeRange(0, [cadena length])
];


NSInteger: números enteros con signo 

NSUInteger: números enteros sin singo, cero o positivo. 

NSArray: colección de objetos, accesible mediante índices. Se pueden añadir cualquier objeto de tipo NSObject. Un array puede contener una mezcla de tipos diferentes de objetos. No todos los objetos deben de ser del mismo tipo.

ejemplos crear instancias de NSArray (nil finaliza la lista de objetos): 


  • NSArray *coleccion = [[NSArray alloc] initWithObjects:@"objecto 1", @"objeto 2", @"objeto 3", nil];
  • NSArray *coleccion = @[@"cadena", @-20, @45]; // no necesita el nil final
  • NSArray *coleccion = [NSArray arrayWithObjects:@"objecto 1", @-20, @45, nil];

ejemplo para recorrer el contenido de NSArray utilizando variable: 


NSArray *coleccion = @[@"cadena", @-20, @45]; 

NSUInteger posicion = 0;
for (posicion = 0; posicion < [coleccion count]; posicion++){
   id elemento = coleccion[posicion];
}

ejemplo para recorrer el contenido de NSArray mediante enumeration: 


for (id elemento in coleccion){
   id elemento = coleccion[posicion];
}



NSMutableArray: colección de objetos, accesible mediante índices, permite modificarse después de su creación.



ejemplos crear instancias de NSMutableArray: 
  • NSMutableArray *coleccionMutable = [NSMutableArray arrayWithArray:@[@"cadena", @-20, @45]];
añadimos un elemento: 

[coleccionMutable addObject:@75];

eliminamos un elemento:

[coleccionMutable removeObject:@-20];

añadimos un NSArray:

NSArray *coleccion = @[@"nuevo valor 1", @"nuevo valor 2"];

[coleccionMutable addObjectsFromArray:coleccion];



ejemplo ordenar un NSArray :

Para ordenar un NSArray o NSMutableArray utilizar el método de ordenación utilizando un bloque de código. Ordenar NSArray devuelve una nueva instancia de NSArray dejando la original intacta. En el caso de NSMutableArray el original es el destino de la ordenación y no devuelve un nuevo array.


NSMutableArray *coleccion = [NSMutableArray arrayWithArray:@[@"Letra B", @"Letra C", @"Letra A"]];

[coleccion sortUsingComparator: ^NSComparisonResult(__strong id obj1, __strong id obj2){

NSString *valor1 = (NSString *)obj1;
NSString *valor2 = (NSString *)obj1;

return [valor1 compare:valor2];

}];

El array mutable coleccion estará ordenado, Letra A, Letra B, Letra C.



NSDictionary: colección de objetos accesibles mediante una clave. Son colecciones objeto/clave.

ejemplos crear instancias de NSDictionary (nil finaliza la lista de objetos): 


  • NSDictionary *coleccion = [[NSDictionary alloc] initWithObjectsAndKeys:@"objecto 1", @"key 1", @574, @"key 2", @"objeto 3", @"Key 3", nil];
  • NSDictionary *coleccion = @{@"objecto 1": @"key 1", @574: @"key 2", @"objeto 3": @"Key 3"};
Para acceder al objeto 2:


 [coleccion objectForKey:@"key 2"];
 coleccion[@"key 2"];


NSMutableDictionary: colección de objetos accesibles mediante una clave. Son colecciones objeto/clave. Puede ser modificado después de su inicialización.


  • NSMutableDictionary *coleccion = [@{@"rojo":@"color", @"peso":@84, @"tipo":@"normal" } mutableCopy];

ejemplo para recorrer una NSMutableDictionary: 

// el método keyEnumerator para obtener un objeto de tipo NSEnumeratot


NSEnumerator *clavesDelDictionary = [coleccion keyEnumerator];

id clavesEnDictionary = nil;

while ((clavesEnDictionary = [clavesDelDictionary nextObject] != nil){

  id elemento = [coleccion objectForKey:clavesEndDictionary];

  // clavesEnDictionary contiene la clave
 // elemento contiene el valor relacionado con la clave

 NSLog("clave %@ ", clavesEnDictionary);
 NSLog("valor %@ ", elemento);

}

otro ejemplo para recorrer una NSMutableDictionary: 

// utilizando enumerateKeyAndObjectsUsingBlock método del diccionario

[coleccion enumerateKeysAndObjectsUsingBlock:
^(__strong id key, __strong id obj, BOOL *stop){

 NSLog("clave %@ ", key);
 NSLog("valor %@ ", obj);

}]



NSNumber: toma un dato numérico de C y lo almacena como objeto NSNumber. Posteriormente se puede almacenar en matrices, diccionarios, etc.
Si sólo se quieren valores numéricos y no objetos utilizar NSInteger, CGFloat y double.

ejemplos crear instancias de NSNumber: 


  • NSNumber *numero = [[NSNumber allocnumberWhitInt: 100];
  • NSNumber *numeroConSigno = @-524; // con singo
  • NSNumber *numeroSinSigno = @1574; // sin singo
  • NSNumber *numeroFloat = @264.455845f; // float
  • NSNumber *numeroDouble = @264.455845458456; // double

para obtener los valores numéricos, que dejan de ser objetos:
  • NSInteger numeroNoObjetoConSigno = [numeroConSigno integerValue];
  • NSNumber  numeroNoObjetoSinSigno = [numeroSinSigno unsignedIntegerValue];
  • NSNumber  numeroNoObjetoFloat = [numeroFloat floatValue];
  • NSNumber  numeroNoObjetoDouble = [numeroDouble doubleValue];


NSDecimalNumber: una subclase de NSNumber para tratar números muy extensos.

NSDate: almacena objetos para tratar datos de tipo fecha.

ejemplos crear instancias de NSDate (en este caso contendrá la fecha actual): 


  • NSDate *numero = [[NSDate alloc] init];

NSURL: nos permite gestionar URL.







  

No hay comentarios:

Publicar un comentario