iphone – 在未知的NSMutableArray深度中搜索值

iphone – 在未知的NSMutableArray深度中搜索值,第1张

概述好吧,我问了一个错误的问题,所以我编辑了原来的问题. 我在数组中存储数组,以及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];

所以在上面的例子中,我需要找到包含@“我是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;}

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

ID object = [self findobjectForKey:@"Title" inArray:array];

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

- (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;}

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

ID key = [self findKeyWithObject:object inArray:array];
总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1019053.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存