Инициализация делает указатель из целого числа без приведения

Я получил это предупреждение, когда я пытаюсь получить символ по индексу

Инициализация делает указатель из целого числа без приведения

вот код:

int random(arch4random()%(string.length));
NSString * char =[string charachterAtIndex:random];

я просто хочу спасибо

3 ответа

Решение

Из NSString

- (unichar)characterAtIndex:(NSUInteger)index

Это метод. Возвращает unichar, а не NSString. Вы объявляете, что ваша переменная является указателем NSString, но unichar сохраняется как целое число за кулисами.

Ваша линия должна быть

unichar character = [string charachterAtIndex:random];

в качестве примечания вы не можете назвать переменную char как зарезервированное ключевое слово в C.

[NSString characterAtIndex] возвращает символ, а не строковый объект. Таким образом, вы не можете присвоить его NSString с именем char (или с именем что-либо еще). Ты можешь сказать:

unichar ch = [string characterAtIndex:random];

По сути, компилятор предупреждает, что, написав

NSString * name = [string characterAtIndex:random];

вы храните указатель на NSString * на адрес, указанный возвращаемым символом (без знака long). Если вам нужно иметь результирующий символ в виде строки NSSt, вы должны использовать такой метод, как

[NSString substringWithRange: NSRangeFromString([NSString stringWithFormat: @"%d-%d", random, 1])];

который возвращает указатель на объект NSString.

Другие вопросы по тегам