-1
// 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;
}

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

这本词典什么时候有多个具有相同搜索项的键?

我对键的了解是它们是唯一的,但是此代码为与特定搜索项匹配的所有键的出现维护一个索引集。

4

1 回答 1

0

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

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

于 2015-04-13T21:17:46.010 回答