una tipos resueltos online multiplicacion matriz matrices inversa ejercicios complemento booleanas booleana c objective-c arrays boolean primitive

tipos - Matriz booleana Objective C



multiplicacion de matrices booleanas online (6)

Necesito utilizar una matriz de booleanos en Object-C. Lo tengo configurado en su mayoría, pero el compilador lanza una advertencia en la siguiente declaración:

[updated_users replaceObjectAtIndex:index withObject:YES];

Esto es, estoy seguro, porque SÍ simplemente no es un objeto; es un primitivo Independientemente, tengo que hacer esto, y agradecería enormemente consejos sobre cómo lograrlo.

Gracias.


Como dijo Georg, usa un C-array.

BOOL myArray[10]; for (int i = 0; i < 10; i++){ myArray[i] = NO; } if (myArray[2]){ //do things; }

Martijn, "myArray" es el nombre que usas, "array" en el ejemplo de georg.


Desde XCode 4.4 puedes usar literales Objective-C.

[updated_users replaceObjectAtIndex:index withObject:@YES];

Donde @YES es equivalente a [NSNumber numberWithBool:YES]


Puede almacenar NSNumbers :

[updated_users replaceObjectAtIndex:index withObject:[NSNumber numberWithBool:YES]];

o use una matriz C, según sus necesidades:

BOOL array[100]; array[31] = YES;


Sí, eso es exactamente lo que es: los contenedores NS * solo pueden almacenar objetos C objetivo, no tipos primitivos.

Debería poder lograr lo que desea envolviéndolo en un NSNumber:

[updated_users replaceObjectAtIndex:index withObject:[NSNumber numberWithBool:YES]]

o usando @(YES) que envuelve un BOOL en un NSNumber

[updated_users replaceObjectAtIndex:index withObject:@(YES)]]

A continuación, puede extraer el boolValue:

BOOL mine = [[updated_users objectAtIndex:index] boolValue];


Si su colección es grande o desea que sea más rápida que objc objects, pruebe los tipos CFBitVector / CFMutableBitVector encuentran en CoreFoundation. Es uno de los tipos de colecciones de CF que no incluye una contraparte de NS, pero puede ser envuelto en una clase objc rápidamente, si así lo desea.


Suponiendo que su matriz contiene objetos válidos (y no es una matriz de estilo c):

#define kNSTrue ((id) kCFBooleanTrue) #define kNSFalse ((id) kCFBooleanFalse) #define NSBool(x) ((x) ? kNSTrue : kNSFalse) [updated_users replaceObjectAtIndex:index withObject:NSBool(YES)];