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

时间:2010-11-15 18:13:11

标签: objective-c pointers ios

好的,我正在努力解决这个问题。我已经搜索了过去的一小时,我不知道我做错了什么。我正在尝试获取发送者的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 个答案:

答案 0 :(得分:16)

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

初始化(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