tutorial que objective español objective-c iphone cocoa-touch uikit

objective-c - objective - que es uikit ios



¿Cómo puedo agregar un valor booleano a un NSDictionary? (5)

Como señaló jcampbell1 , ahora puedes usar la sintaxis literal para NSNumbers:

NSDictionary *data = @{ // when you always pass same value @"someKey" : @YES // if you want to pass some boolean variable @"anotherKey" : @(someVariable) };

Bueno, para enteros usaría NSNumber . Pero sí y no son objetos, supongo. Afaik solo puedo agregar objetos a un NSDictionary , ¿verdad?

No pude encontrar ninguna clase contenedora para booleanos. ¿Hay alguna?


La nueva sintaxis desde Apple LLVM Compiler 4.0

dictionary[@"key1"] = @(boolValue); dictionary[@"key2"] = @YES;

La sintaxis convierte BOOL en NSNumber , que es aceptable para NSDictionary .


Prueba esto:

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; [dic setObject:[NSNumber numberWithBool:TRUE] forKey:@"Pratik"]; [dic setObject:[NSNumber numberWithBool:FALSE] forKey:@"Sachin"]; if ([dic[@"Pratik"] boolValue]) { NSLog(@"Boolean is TRUE for ''Pratik''"); } else { NSLog(@"Boolean is FALSE for ''Pratik''"); } if ([dic[@"Sachin"] boolValue]) { NSLog(@"Boolean is TRUE for ''Sachin''"); } else { NSLog(@"Boolean is FALSE for ''Sachin''"); }

El resultado será el siguiente:

Boolean es VERDADERO para '' Pratik ''

Boolean es FALSO para '' Sachin ''


Si lo declaras literal y estás utilizando clang v3.1 o superior, debes usar @NO / @YES si lo declaras literal. P.ej

NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy]; foo[@"bar"] = @YES;

Para más información sobre eso:

http://clang.llvm.org/docs/ObjectiveCLiterals.html


Usas NSNumber.

Tiene init ... y number ... métodos que toman booleanos, como lo hace enteros, etc.

De la referencia de clase NSNumber :

// Creates and returns an NSNumber object containing a // given value, treating it as a BOOL. + (NSNumber *)numberWithBool:(BOOL)value

y:

// Returns an NSNumber object initialized to contain a // given value, treated as a BOOL. - (id)initWithBool:(BOOL)value

y:

// Returns the receiver’s value as a BOOL. - (BOOL)boolValue