iOS   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – 在未知的NSMutableArray深度中搜索值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

好吧,我问了一个错误的问题,所以我编辑了原来的问题. 我在数组中存储数组,以及NSDictionaries.它是一种实用类型的应用程序,没有设置结构,用户可以根据需要输入嵌套信息. 理想情况下,我需要一个方法来给定一个set参数(一种类,可能是一个字典键)滚动我的数组的整个内容.这是一个例子.. NSMutableArray *array = [[NSMutableArray alloc]init
好吧,我问了一个错误的问题,所以我编辑了原来的问题.

在数组中存储数组,以及NSDictionaries.它是一种实用类型的应用程序,没有设置结构,用户可以根据需要输入嵌套信息.

理想情况下,我需要一个方法来给定一个set参数(一种类,可能是一个字典键)滚动我的数组的整个内容.这是一个例子..

NSMutableArray *array = [[NSMutableArray alloc]init];

NSMutableDictionary *enteredItem = [[NSMutableDictionary alloc]init];

[enteredItem setObject:@"i'm a title"       forKey:@"title"];
[enteredItem setObject:@"i'm an id"         forKey:@"id"];
[enteredItem setObject:@"i'm a description" forKey:@"description"];
[enteredItem setObject:@"i'm a timestamp"   forKey:@"timestamp"];
[enteredItem setObject:array                forKey:@"items"];


[array addObject:enteredItem];
[array addObject:anotherDictionary];
[array addObject:moreDictionaries];@H_801_26@ 
 

所以在上面的例子中,我需要找到包含@“我是id”的字典(并返回它).

希望我的问题很明确.谢谢你尽你所能的帮助.

解决方法

递归方法是正确的,但是如果您还不知道递归,我不确定代码示例是否非常有用.这是一个有效的解决方案:

添加以下方法

- (id)findObjectWithKey:(id)key inArray:(NSArray *)array
{
    for (id object in array)
    {
        if ([object isKindOfClass:[NSArray class]])
        {
            return [self findObjectWithKey:key inArray:object];
        }
        else if ([object isKindOfClass:[NSDictionary class]])
        {
            return [self findObjectWithKey:key inDictionary:object];
        }
    }
    return nil;
}

- (id)findObjectWithKey:(id)key inDictionary:(NSDictionary *)Dict
{
    for (id subKey in Dict)
    {
        id object = [Dict objectForKey:subKey];
        if ([subKey isEqual:key])
        {
            return object;
        }
        else if ([object isKindOfClass:[NSArray class]])
        {
            return [self findObjectWithKey:key inArray:object];
        }
        else if ([object isKindOfClass:[NSDictionary class]])
        {
            return [self findObjectWithKey:key inDictionary:object];
        }
    }
    return nil;
}@H_801_26@ 
 

然后找到你的对象,只需说:

id object = [self findObjectForKey:@"title" inArray:array];@H_801_26@ 
 

修改方法以查找特定对象并返回字典键,请执行以下操作:

- (id)findKeyWithObject:(id)key inArray:(NSArray *)array
{
    for (id object in array)
    {
        if ([object isKindOfClass:[NSArray class]])
        {
            return [self findKeyWithObject:key inArray:object];
        }
        else if ([object isKindOfClass:[NSDictionary class]])
        {
            return [self findKeyWithObject:key inDictionary:object];
        }
    }
    return nil;
}

- (id)findKeyWithObject:(id)object inDictionary:(NSDictionary *)Dict
{
    for (id key in Dict)
    {
        id subObject = [Dict objectForKey:key];
        if ([subObject isEqual:object])
        {
            return key;
        }
        else if ([subObject isKindOfClass:[NSArray class]])
        {
            return [self findKeyWithObject:object inArray:object];
        }
        else if ([subObject isKindOfClass:[NSDictionary class]])
        {
            return [self findKeyWithObject:object inDictionary:object];
        }
    }
    return nil;
}@H_801_26@ 
 

然后找到你的钥匙,只需说:

id key = [self findKeyWithObject:object inArray:array];@H_801_26@

大佬总结

以上是大佬教程为你收集整理的iphone – 在未知的NSMutableArray深度中搜索值全部内容,希望文章能够帮你解决iphone – 在未知的NSMutableArray深度中搜索值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。