ios - 查找存储在NSDictionary中的值的索引和存储在NSMutableArray中的NSDictionary的值的索引

标签 ios objective-c iphone ipad

我有NSMutableArray,它存储NSDictionary。考虑以下包含NSDictionary的数组。

<__NSArrayM 0x7f9614847e60>(
{
    "PARAMETER_KEY" = 1;
    "PARAMETER_VALUE" = ALL;
},
{
    "PARAMETER_KEY" = 2;
    "PARAMETER_VALUE" = ABC;
},
{
    "PARAMETER_KEY" = 3;
    "PARAMETER_VALUE" = DEF;
},
{
    "PARAMETER_KEY" = 4;
    "PARAMETER_VALUE" = GHI;
},
{
    "PARAMETER_KEY" = 5;
    "PARAMETER_VALUE" = JKL;
}
)

我可以使用以下代码找到特定NSDictionary的索引。
int tag = (int)[listArray indexOfObject:dictionary];

但是,如果我有PARAMETER_VALUE = GHI并使用此值,我想将该字典索引查找到数组中。我不想使用for循环。我可以在没有for循环的情况下获取索引吗?

最佳答案

您可以像这样在category上添加NSArray(这也会进行类型安全检查;仅处理字典数组):

- (NSInteger)indexOfDictionaryWithKey:(NSString *)iKey andValue:(id)iValue {
    NSUInteger index = [self indexOfObjectPassingTest:^BOOL(NSDictionary *dict, NSUInteger idx, BOOL *stop) {
        if (![dict isKindOfClass:[NSDictionary class]]) {
            *stop = YES;
            return false;
        }

        return [dict[iKey] isEqual:iValue];
    }];

    return index;
}

然后,直接在数组对象上直接调用indexOfDictionaryWithKey:andValue:即可获取索引。

万一您想从该数组中取出字典对象,请在NSArray中再添加一个类别:
- (NSDictionary *)dictionaryWithKey:(NSString *)iKey andValue:(id)iValue {
    NSUInteger index = [self indexOfDictionaryWithKey:iKey andValue:iValue];

    return (index == NSNotFound) ? nil : self[index];
}

关于ios - 查找存储在NSDictionary中的值的索引和存储在NSMutableArray中的NSDictionary的值的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33143836/

相关文章:

ios - 以编程方式为特定 View Controller 设置设备方向

ios - 将 GCD 与 View 动画混合

iphone - 如何在核心数据中保存单个实体

iphone - 将 UILabel 添加到 UIImageView

ios - 应用意外退出但与xcode连接时运行平稳

javascript - 在 WKWebView 中公开 JavaScript 中的 native 方法

ios - 如何在 Unity 中获取 Firebase 应用程序目录中的文件列表

objective-c - 使用 Cocoa 自动化浏览器任务?

iphone - 通过点击放大 uiwebview?

ios - 传递 URL 数组的问题