Сохранение данных в виде строки в массив целых чисел

#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 и так далее…