инициализация делает указатель из целого числа без приведения - PullRequest
5 голосов
/ 15 ноября 2010

Хорошо, мне тяжело с этим.Я искал последний час и не понимаю, что делаю неправильно.Я пытаюсь взять currentTitle отправителя, а затем преобразовать его в целое число, чтобы я мог использовать его в вызове списка.

NSString *str = [sender currentTitle];
NSInteger *nt = [str integerValue]; // this is where the error appears //
NSString *nextScreen = [NSString stringWithFormat:@"Screen_%@.jpg", [screenList objectAtIndex:nt]];

Я предполагаю, что это что-то с битом [str integerValue] неправильно используется, но я не могу найти пример, который работает.

Спасибо!

1 Ответ

16 голосов
/ 15 ноября 2010

Давайте проанализируем сообщение об ошибке:

Инициализация (NSInteger nt) делает указатель (*) из целого числа ([str integerValue]) без приведения.

Это означает, что вы пытаетесь присвоить переменную не указательного типа ([str integerValue], которая возвращает NSInteger) переменной типа указателя.(NSInteger *).

Избавьтесь от * после NSInteger и с вами все будет в порядке:

NSString *str = [sender currentTitle];
NSInteger nt = [str integerValue]; // this is where the error appears //
NSString *nextScreen = [NSString stringWithFormat:@"Screen_%@.jpg", [screenList objectAtIndex:nt]];

NSInteger - это типоболочка для машинно-зависимого целочисленного типа данных, который определяется следующим образом:

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...