Инициализация делает указатель из целого числа без приведения
Я получил это предупреждение, когда я пытаюсь получить символ по индексу
Инициализация делает указатель из целого числа без приведения
вот код:
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.