NSDictionary中键的索引计数何时大于1?

时间:2015-04-13 19:58:51

标签: objective-c nsdictionary objective-c-blocks nsindexset

// 1 - Find the matching item index
NSIndexSet* indexes = [[self.orderItems allKeys] indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    IODItem* key = obj;
    return [searchItem.name isEqualToString:key.name] && 
    searchItem.price == key.price;
}];
// 2 - Return first matching item
if ([indexes count] >= 1) {
    IODItem* key = [[self.orderItems allKeys] objectAtIndex:[indexes firstIndex]];
    return key;
}

在这段代码中,我正在检查字典中的所有键并将其与搜索项进行比较。

此词典何时具有多个具有相同搜索项的键?

我对密钥的了解是它们是唯一的,但是这段代码维护着与特定搜索项匹配的密钥的所有出现的索引集。

1 个答案:

答案 0 :(得分:0)

测试不是比较键。密钥(显然)是IODItem的实例。该测试正在比较这些项目的两个特定属性nameprice。根据{{​​1}}的{​​{1}}和-isEqual:的定义方式,可能会有多个具有相同名称和价格的密钥,因此通过测试的密钥不止一个。因此,-hash中可能有多个索引。

但是代码实际上并没有检查是否存在多个索引。它正在检查是否存在至少一个(即大于零)。