我有一个带字典的数组,
。如何获取特定字典的索引... [我在哪里获得了我想要查找的字典的数据,但需要索引是否已开启]
NSMutableDictionary *dictois = [[NSMutableDictionary alloc]init];
[dictois setObject:@"easySpritedd" forKey:@"Nombre"];
[dictois setObject:@"X" forKey:@"290"];
[dictois setObject:@"Y" forKey:@"300"];
int fooIndex = [self.bloquesArray indexOfObject: dictois];
但正如您所见,我还不知道如何在indexOfObject
中获取字典进行比较谢谢!
答案 0 :(得分:2)
使用以下代码
NSMutableDictionary *dictois = [[NSMutableDictionary new]autorelease];
[dictois setObject:@"easySpritedd" forKey:@"Nombre"];
[dictois setObject:@"X" forKey:@"290"];
[dictois setObject:@"Y" forKey:@"300"];
int fooIndex = [self.bloquesArray indexOfObjectPassingTest: ^(id obj, NSUInteger idx, BOOL *stop){
if( [[obj class] isKindOfClass: [NSDictionary class]] ) {
BOOL result = [obj isEqualToDictionary: diction];
*stop = result;
return result;
}
*stop = NO;
return NO;
}];
答案 1 :(得分:2)
NSDictionary对象具有以下比较方法:
- (BOOL)isEqualToDictionary:(NSDictionary *)otherDictionary
通过以下讨论
如果两个词典各自具有相同的数字,则它们具有相同的内容 对于给定的键,条目和对应的值对象 每个字典满足isEqual:test。
这应该是你的情况。遗憾的是你不能改变NSArray用来计算indexOfObject的方法:所以它无法帮助你,因此Denis提供的解决方案是我能想到的最好的解决方案(除非你想要继承NSArray我不推荐使用它)。 / p>
作为Denis回答的补充,您可以使用NSArray方法
- (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate
而不是
- (NSUInteger)indexOfObjectPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate
如果阵列中有多个相同的对象,则可能。