初始化使得指针来自整数而不是强制转换

时间:2012-04-23 21:10:19

标签: iphone ios nsuinteger

当我试图在索引

处获得一个角色时,我收到了这个警告

初始化使得指针来自整数而不是强制转换

这是代码:

int random(arch4random()%(string.length));
NSString * char =[string charachterAtIndex:random];
我只是想 感谢

3 个答案:

答案 0 :(得分:2)

来自NSString

- (unichar)characterAtIndex:(NSUInteger)index

是方法吗?它返回一个unichar,而不是NSString。您声明您的变量是NSString指针,但unichar在幕后存储为整数。

你的专栏应该是

unichar character = [string charachterAtIndex:random];

作为附注,您不能将变量char称为C中的保留关键字。

答案 1 :(得分:0)

[NSString characterAtIndex]返回一个字符,而不是字符串对象。因此,您无法将其分配给名为char的NSString(或其他任何名称)。你可以说:

unichar ch = [string characterAtIndex:random];

答案 2 :(得分:0)

基本上,编译器通过编写

来警告
NSString * name = [string characterAtIndex:random];

您将指向NSString *的指针存储到返回的字符(unsigned long)引用的地址。 如果需要将结果字符作为NSString,则应使用类似

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

返回指向NSString对象的指针。