是否有可能在NSArray中找出数组中是否存在给定值(不使用for循环搜索)?任何默认的随机方法。我浏览了documentation,但没有找到相关的内容。
还请告诉我valueForKey
方法(我无法从doc获得)。
答案 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
。重要:如果
anObject
是nil
异常被提出。
答案 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)
将objectAtIndex
和indexOfObject
组合在一起:
[tmpArray objectAtIndex:[tmpArray indexOfObject:yourObject]];