我的数组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]];
}
}
答案 0 :(得分:4)
NSInteger
与int
类似,因此您无法向其发送消息([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]];
代替。
(已编辑)