初始化使得整型指针没有强制转换

好的,我正在用这个很难。 我已经search了过去的一小时,我不明白我做错了什么。 我试图把发送者的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]位不正确使用,但我找不到一个有效的例子。

谢谢!

我们来分析一下错误信息:

初始化( NSInteger nt )从整数( [str integerValue] )中生成指针( * )而不进行[str integerValue]

这意味着你正试图把一个非指针types的variables( [str integerValue] ,它返回一个NSInteger )赋给一个指针types的variables。 ( 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是一个机器相关的整型数据types的封装器,它的定义如下:

 #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