#objective-c #arrays #ios
#objective-c #массивы #iOS
Вопрос:
У меня есть некоторые данные в виде строки, и я хочу сохранить эти данные в массиве целых чисел… Ниже приведен код.
int valMines[256];
// 'b' is NSString with 256 values in it.
for(int i=0; i<[b length]; i ){
valMines[i] = [NSString stringWithFormat:@"%d", [b characterAtIndex:i]];
NSLog(@"valMines1 is %@", valMines[i]);
}
Я получаю предупреждение, и из-за этого мое приложение не загружается:
Присваивание преобразует целое число из указателя без приведения.
Пожалуйста, помогите
Ответ №1:
Ваш valMins представляет собой массив целых чисел, и вы присваиваете ему NSString. Вероятно, вы ищете что-то вроде этого:
unichar valMines[256]; // make it unichar instead of int
// 'b' is NSString with 256 values in it.
for(int i=0; i<[b length]; i ){
valMines[i] = [b characterAtIndex:i]; // get and store the unichar
NSLog(@"valMines1 is %d", valMines[i]); // format specifier is %d, not %@
}
Комментарии:
1. не может ли быть какого-либо другого способа сохранить его в массиве int… Проблема в том, что у меня закодирована целая большая программа, и теперь для меня проблема изменить ее… Превращение его в массив unichar вместо int выдает мне множество предупреждений и ошибок.
2. unichar — это просто typedef для короткого целого числа без знака. Если этот массив необходим для того, чтобы быть целочисленным массивом для других мест, вы можете оставить это с помощью int . С приведенным выше кодом проблем не возникнет. Просто сделайте это int valMins[256] вместо unichar valMins[256].
3. Хм, я пробовал… но это дает мне некоторые ненужные значения при печати… уверен, что это должно быть %d??
4. Каково содержимое вашей строки? Какое ненужное значение вы получаете?
5. Содержимое в моей строке {-1-2-3-40134523} любые целочисленные значения ve и -ve в диапазоне от -4 до 4… Но когда я печатаю на консоли для valMine [0], он выводит 45, valMine [1] 38, для valMine [2] 48 и так далее…