通过传递值来查找NSArray的索引

时间:2011-05-26 05:06:11

标签: iphone objective-c nsarray

是否有可能在NSArray中找出数组中是否存在给定值(不使用for循环搜索)?任何默认的随机方法。我浏览了documentation,但没有找到相关的内容。

还请告诉我valueForKey方法(我无法从doc获得)。

5 个答案:

答案 0 :(得分:10)

containsObject:方法通常会为您提供所要求的内容 - 虽然它的名称听起来像是在查询特定的实例(即两个具有相同语义的对象不匹配)它实际上在对象上调用isEqual:,因此它通过 value 进行测试。

如果您想要项目的索引(如标题所示),请使用indexOfObject:,它还会调用isEqual:来找到匹配项。

valueForKey:适用于拥有一系列词典的情况;它查找每个字典中的键并返回结果数组。

答案 1 :(得分:6)

我相信你想使用indexOfObject方法。来自the documentation

  

indexOfObject:

     

返回其最低索引   对应的数组值等于   给定的对象。

- (NSUInteger)indexOfObject:(id)anObject

  

参数

     

anObject

An object.
     

返回值

     

对应的最低索引   数组值等于anObject。如果   数组中没有任何对象   等于anObject,返回NSNotFound

     

讨论

     

如果对象被视为相等   isEqual:会返回YES

     

重要:如果anObjectnil   异常被提出。

答案 2 :(得分:4)

您可以使用:

NSInteger idx = [myArray indexOfObject:obj]; 

找到对象的索引 要检查对象是否存在于数组中,您可以使用:

- (BOOL)containsObject:(id)anObject 

答案 3 :(得分:0)

使用NSPredicate根据NSArray

过滤NSDictionary
array = [dictionary filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(key == %@)", value]];

if([array count]>0)
{
value exists;
}

答案 4 :(得分:0)

objectAtIndexindexOfObject组合在一起:

[tmpArray objectAtIndex:[tmpArray indexOfObject:yourObject]];