如何根据数组中的键从嵌套数组中获取数据

时间:2012-03-29 05:55:32

标签: objective-c ios4 nsarray multidimensional-array

你好frnds实际上我有一个数组数组,如下所示:-`

parrent array{
    PrArr =       

            {
                dt = "01-Apr-2012 11:15 PM\n";
                dur = "15\n\t\t";
                name = "Tez Special\n\t\t";
            },
                        {
                dt = "01-Apr-2012 11:30 PM\n\n";
                dur = "30\n\t\t";
                name = "Tez Tare\n\t\t";
            }
        );
        sid = "530\n";
    },

        {
        PrArr =         (

            {
                dt = "01-Apr-2012 11:20 PM\n";
                dur = "20\n\t\t";
                name = "Shiv Yog - Acharya Ishan Shivanandji\n\t\t";
            },
                        {
                dt = "01-Apr-2012 11:40 PM\n\n\n\t";
                dur = "20\n\t\t";
                name = "Param Pujya Swami HariChaitanya Puriji Maharaj\n\t\t";
            };
            sid = "560\n";
    },

} 我想根据数组中的sid获取数据。

提前完成

2 个答案:

答案 0 :(得分:0)

我只是试探性地涂鸦,检查这样的事情是否对你有帮助。

NSSortDescriptor *sidDescr = [[NSSortDescriptor alloc] initWithKey:@"sid" ascending:YES];
sortDescriptors =  [NSArray arrayByAddingObject:sidDescr];    
NSArray * sortedArr = [*yourparentarray* sortedArrayUsingDescriptors:sortDescriptors];

答案 1 :(得分:0)

如果你想找到sid相等的字典,那么你需要使用NSPredicate

来自苹果文档:

  

Predicates提供了在Cocoa中指定查询的一般方法。该   谓词系统能够处理大量域,而不是   只是 - 例如 - 核心数据或聚焦。本文档描述   一般的谓词,它们的用法,语法和限制。

使用NSPredicate,您可以找到与您的搜索相对应的所有sid。

我会举个例子。根据您在此处发布的数组,您希望返回sid等于@“530 \ n”的条目,您需要做的是:

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"sid LIKE %@",@"530\n"];
NSDictionary* entry = [[parentArray filteredArrayUsingPredicate:predicate] objectAtIndex:0];

但是如果您尝试根据sid对数组进行排序,则可以使用NSSortDescriptor,它将返回基于sid排序的数组。

来自苹果文档:

  

排序描述符描述用于对集合进行排序的比较   对象。您创建一个NSSortDescriptor实例来指定   要排序的属性键,以及是否应该进行比较   升序或降序。排序描述符也可以指定   比较属性键值时使用的方法,而不是   默认比较:。

     

重要的是要记住NSSortDescriptor不排序   对象。它提供了如何对对象进行排序的说明。该   实际排序由其他类完成,通常是NSArray或   的NSMutableArray。

你的一个例子

NSSortDescriptor *sidDescriptor= [[NSSortDescriptor alloc] initWithKey:@"sid" ascending:YES];
NSArray* sortDescriptors = [NSArray arrayWithObject:sidDescriptor];    
NSArray* sortedArray = [parentArray sortedArrayUsingDescriptors:sortDescriptors];