2012-04-23 1 views
0

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

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

вот код:

я just wanna Thanks

+0

В чем вопрос? – Jasper

+2

О, и в любом случае вы не должны использовать 'char' в качестве имени переменной. Это примитивный тип от c. – Jasper

ответ

2

из NSString

- (unichar)characterAtIndex:(NSUInteger)index 

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

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

unichar character = [string charachterAtIndex:random]; 

как сторона, обратите внимание, вы не можете назвать ваш переменный символ в качестве своего зарезервированного ключевое слова в С.

0

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

unichar ch = [string characterAtIndex:random]; 
0

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

NSString * name = [string characterAtIndex:random]; 

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

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

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