Estoy tratando de determinar lo que es un valor en una matriz y luego implementar cambios en la matriz, pero no puedo acceder a la matriz en el primer lugar ...conversión de NSNumber a NSInteger
NSNumber *row = [NSNumber numberWithInt:recognizer.view.tag];
NSInteger *newRow = [row integerValue];
NSInteger *index = [selectedItems indexOfObject:row];//0=Not selected 1=selected;
NSLog(@"%@ & ",row);
if (index == 0) {
[selectedItems removeObjectAtIndex:newRow];
[selectedItems insertObject:@"1" atIndex: newRow];
[(UITableViewCell *)(recognizer.view) setAccessoryType:UITableViewCellAccessoryCheckmark];
} else {
[selectedItems removeObjectAtIndex: newRow];
[selectedItems insertObject:@"0" atIndex: newRow];;
[(UITableViewCell *)(recognizer.view) setAccessoryType:UITableViewCellAccessoryNone];
}
Como puede ver, trato de obtener información de la variable de fila, que es un NSNumber y encontrar el valor de la matriz con la variable de índice. También he declarado esto en mi onload() ...
selectedItems = [NSArray arrayWithObjects: 0, 0, 0, nil];
El problema es que tengo todas estas advertencias diciendo ...
Incompatible integer to pointer conversion initializing 'NSInteger *' (aka 'int *') with an expression of type 'NSUInteger' (aka 'unsigned int');
Cada vez que utilice la fila varaibles o newRow. Como puede ver, newRow es solo una fila como un entero. ¿Qué estoy haciendo mal?
+1. Solo quiero agregar que aunque NSInteger es solo un typedef para int, es más útil que solo un int porque se acomodará a las arquitecturas de 32 bits/64 bits por sí mismo. – jmstone617
Si elimino el puntero para newRow e index, no recibo ninguna advertencia, pero cuando ejecuto mi aplicación aparece un error cuando ejecuto este código ... NSLog (@ "% @ &% @", newRow, index); El error es EXC_BAD_ACCESS –
Es mejor considerarlo como un typedef para 'long' (incluso cuando no lo es). Su tamaño varía según la arquitectura de destino. –