jueves, 4 de agosto de 2011

Ejemplo de como obtener información de un .plist

En este caso necesitaba obtener información de un .plist para verla en un textField al iniciar la aplicación para eso en el método viewDidLoad de mi viewController agregue este código:
    

- (void)viewDidLoad {

    NSString *path = [[NSBundle mainBundle] bundlePath];
    NSString *finalPath = [path stringByAppendingPathComponent:@"Info.plist"];
    NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];
   
    NSString *asa =  [plistData objectForKey:@"AsaPapel"];
    //asaE es el textField
    asaE.text = asa; 
}

martes, 2 de agosto de 2011

NSLog - Especificadores de formato


%@     Objecto
%d, %i signed int
%u     unsigned int
%f     float/double

%x, %X hexadecimal int
%o     octal int
%zu    size_t
%p     puntero
%e     float/double (en notación científica)
%g     float/double ( %f o %e, dependiendo del valor)
%s     C string (bytes)
%S     C string (unichar)
%.*s   Pascal string (requiere dos argumentos, pstr[0] el primero, pstr+1 el segundo)
%c     character
%C     unichar

%lld   long long
%llu   unsigned long long
%Lf    long double

domingo, 29 de mayo de 2011

Objective-C - Punteros

La memoria en la computadora puede ser imaginada como una serie de casillas de correo, cada una con el menor tamaño que usa una computadora (un byte).
Estas casillas de correo se enumeran secuncialmente, entonces para obtener la dirección siguiente agregamos un 1 a la dirección actual.
Por ejemplo, tomemos la siguiente declaración:
int anInteger = 42;
Asumimos que anInteger (con el valor 42) es alojado en la dirección de memoria 32, en otras palabras la dirección de memoria 32 que se llama anInteger contiene el valor 42.
Las direcciones de memoria pueden contener distintos tipos de valores, un int, un float o un puntero que es una dirección de memoria.

Ahora veamos esta declaración:
int *anIntPointer = &anInteger
La primera parte de la declaración declara una variable llamada anIntPointer.
El * le dice al compilador que este tipo es un puntero a un entero en vez de un entero. La referencia & le dice al compilador que quiere que anIntPointer se inicialice con la dirección de anInteger, que es la variable que declaramos antes.

En otras palabras, anIntPointer tendra la dirección de memoria de anInteger, por lo tanto anIntPointer tendra guardado el valor 32.
Para ir desde el puntero anIntPointer que contiene la dirección de anInteger al valor actual de anInteger utilizamos el operador (*).



por ejemplo, el resultado del siguiente código
int anInteger = 42;
    int *anIntPointer = &anInteger;
    NSLog (@”anInteger = %i”, anInteger);
    NSLog (@”*anIntPointer = %i”, *anIntPointer);
    
es

anInteger = 42
*anIntPointer = 42

jueves, 5 de mayo de 2011

¿Cómo programar C con XCode?

Seleccionamos File > New > New Project, luego elegimos "Command Line Utility" y seleccionamos C.
En el proyecto vamos a ver que tenemos creado un archivo llamado main.c para escribir nuestro código.
Eso es todo!

viernes, 29 de abril de 2011

Objective-C - Clase NSNumber

Los números se pueden trabajar con NSNumber.
NSNumber tiene métodos de clase para crear NSNumbers de distintos tipos, por ejemplo:

+ numberWithBool:


Una vez creado el número podemos acceder a el de manera de que nos devuelva diferentes tipos.
También hay métodos para comparar:

– compare:
– isEqualToNumber:

En que caso uso NSNumber y en cuales NSInteger?
No hay regla, es depende de lo que quieres hacer.
A diferencia de NSNumber, NSInteger no es un objeto, es un macro.
Se debe usar NSNumber si o si (de lo contrario la aplicación nos dara error) cuando se quiere insertar objetos a un array.

sábado, 5 de marzo de 2011

Objective-C - Introspección

Introspección significa determinar en tiempo de ejecución la estructura de un objeto.
En Objective-C podemos realizar la introspección mediante 3 métodos:


isKindOfClass: si un objeto es ese tipo de clase (incluye herencia)
isMemberOfClass: si un objeto es ese tipo de clase (sin herencia)
respondsToSelector: si un objetore responde a un método determinado

martes, 1 de marzo de 2011

Comparar dos cadenas NSString

if ([cadena1 isEqualToString: cadena2])
{
// Codigo
}