是否可以在NSArray中查找给定值是否存在于数组中(不使用for循环搜索它)?任何默认的随机方法。我经历了documentation,但没有发现太多相关。通过传递值查找NSArray的索引
请同时告诉我关于valueForKey
方法(我无法从doc中获取)。
是否可以在NSArray中查找给定值是否存在于数组中(不使用for循环搜索它)?任何默认的随机方法。我经历了documentation,但没有发现太多相关。通过传递值查找NSArray的索引
请同时告诉我关于valueForKey
方法(我无法从doc中获取)。
的containsObject:
方法通常会给你什么你问 - 虽然它的名字听起来像你要查询特定实例(即两个对象具有相同的语义值将不匹配)它实际上调用isEqual:
上的对象,所以它正在测试值。
如果您希望项目的索引(如标题所示)使用indexOfObject:
,它还会调用isEqual:
来查找匹配项。
valueForKey:
适用于有字典数组的情况;它会在每个字典中查找关键字并返回结果数组。
我相信你想使用indexOfObject
方法。从the documentation:
indexOfObject:
返回最低索引其 相应的数组值等于 给定的对象。
- (NSUInteger)indexOfObject:(id)anObject
参数
anObject
An object.
返回值
最低索引,其相应的 阵列值等于吨
anObject
。如果 阵列中没有任何对象是 等于anObject
,则返回NSNotFound
。讨论
的对象被认为是相等的,如果
isEqual:
返回YES
。重要:如果
anObject
是nil
的 异常。
使用NSPredicate
来过滤NSArray
基于NSDictionary
array = [dictionary filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(key == %@)", value]];
if([array count]>0)
{
value exists;
}
您可以使用:
NSInteger idx = [myArray indexOfObject:obj];
找对象的索引。
并检查对象是有或没有在数组你可以使用:
- (BOOL)containsObject:(id)anObject
结合objectAtIndex
和indexOfObject
这样的:
[tmpArray objectAtIndex:[tmpArray indexOfObject:yourObject]];
感谢您的最快准确的响应和编辑(+1为),但正如我所问,CRD也描述了valueForKey。 – rptwsthi 2011-05-26 05:34:13