我正在运行这样的代码,它正在给我这个错误:
Incompatible integer to pointer conversion initializing NSArray *_strong with an expression of type 'int'.
代码是这样的:
- (NSArray *)randperm:(int)total
{
NSMutableArray *array = [[NSMutableArray alloc] init];
int counter = 0;
while (counter < total) {
NSNumber *randomInteger = [NSNumber numberWithInt:(arc4random_uniform(total)+1)];
if (![array containsObject:randomInteger]) {
[array addObject:(randomInteger)];
counter++;
}
}
NSArray *arr = [array copy];
return arr;
}
我称之为:
NSArray *array = randperm(6);
这一行给我一个错误。不确定为什么会出现这样的错误。
答案 0 :(得分:5)
您正在调用Objective-C方法,就像它是C:
一样NSArray *array = randperm(6);
应该是:
NSArray *array = [self randperm:6];
此外,在返回数组之前无需复制数组:
NSArray *arr = [array copy];
return arr;
只是做:
return array;
答案 1 :(得分:3)
您的问题的解决方案是这样调用:
NSArray *array = [self randperm:6];
答案 2 :(得分:0)
除上述两个答案外,请尝试更改:
[NSNumber numberWithInt:(arc4random_uniform(4)+1)]
到
[NSNumber numberWithUnsignedInt:(arc4random_uniform(4)+1)]
因为arc4random_uniform
正在返回unsigned int
。