如何检查NSArray是否具有另一个数组的值

时间:2013-08-05 19:29:53

标签: ios objective-c cocoa-touch

我的数组unique是我的主数组和我的数组kind。我需要检查数组kind中是否只有unique的1个值。然后,如果kind中的数组unique的值超过1,我需要取消设置除数组中使用的第一个值之外的所有值。

我需要进一步实现这一点是使用以下代码,但我无法存储找到的对象的indexpath以进行稍后的比较。 xcode说"bad receiver type nsinteger"

任何人都可以帮助我实现这个目标吗?

kind = @[@"#Routine",@"#Exercise",@"#Username"];
    NSMutableArray *uniqueKind = [NSMutableArray array];
    for (NSString* obj in kind) {
        if ( [unique containsObject:obj] ) {
            NSInteger i = [unique indexOfObject:obj];
            [uniqueKind addObject: [i intValue]];
        }
    }

3 个答案:

答案 0 :(得分:4)

NSIntegerint类似,因此您无法向其发送消息([i intValue])。此外,您不能将NSInteger添加到数组而不将其设置为NSNumber或其他对象类型。你可以这样做:

NSInteger i = [unique indexOfObject:obj];
[uniqueKind addObject: [NSNumber numberWithInteger:i]];

另外(不了解你在做什么)你可能想要使用NSSet而不是数组。你可以结合几个电话:

NSUInteger i = [unique indexOfObject:obj];
if ( i != NSNotFound ) {
    [uniqueKind addObject:[NSNumber numberWithInteger:i]];
}

答案 1 :(得分:2)

我不确定它是否可以解决您的问题,但是您是否考虑过使用集合(或可变变量)而不是数组?它们确保了唯一性,并允许您检查交叉点/遏制。请参阅NSSet class reference

答案 2 :(得分:0)

您必须将对象添加到NSMutableArray,而不是实际的intValue。尝试首先将整数转换为NSNumber。

[uniqueKind addObject: [NSNumber numberWithInt:i]];

代替。

(已编辑)