Ответ 1
NSInteger - это всего лишь typedef для int
, поэтому он не тип объекта, это скаляр, вам не нужно объявлять его как тип указателя. Используйте
NSInteger newRow = [row integerValue];
вместо.
Я пытаюсь определить, какое значение находится в массиве, а затем реализовать изменения в массиве, но я не могу получить доступ к массиву в первую очередь...
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];
}
Как вы можете видеть, я пытаюсь получить информацию из переменной строки, которая является NSNumber и найти значение массива с индексной переменной. Также я объявил это в моей onload()...
selectedItems = [NSArray arrayWithObjects: 0, 0, 0, nil];
Проблема в том, что я получаю все эти предупреждения, говорящие...
Incompatible integer to pointer conversion initializing 'NSInteger *' (aka 'int *') with an expression of type 'NSUInteger' (aka 'unsigned int');
Всякий раз, когда я использую строку varaibles или newRow. Как вы видите, newRow - это просто строка как целое число. Что я делаю неправильно?
NSInteger - это всего лишь typedef для int
, поэтому он не тип объекта, это скаляр, вам не нужно объявлять его как тип указателя. Используйте
NSInteger newRow = [row integerValue];
вместо.
NSInteger - это примитив, а не тип объекта. Такие коллекции, как массивы, могут содержать только объекты, такие как NSNumber.
Вы можете получить примитивное значение из NSNumber, используя методы, такие как -integerValue
. Обратите внимание, что вы обычно не хотите делать указатель NSInteger (NSInteger *), вам просто нужен NSInteger.
Также нет смысла принимать recognizer.view.tag
, создавая из него NSNumber, а затем вызывающий -integerValue
в этом NSNumber. Просто используйте recognizer.view.tag
непосредственно как целочисленное значение. (Вы можете назначить его локальной переменной для быстрого доступа.)