不兼容的整数到指针转换初始化NSArray *

时间:2014-12-17 13:56:37

标签: ios objective-c

我正在运行这样的代码,它正在给我这个错误:

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);

这一行给我一个错误。不确定为什么会出现这样的错误。

3 个答案:

答案 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