如何在目标c中对数组执行“选择”?

时间:2014-01-31 10:37:17

标签: ios objective-c arrays loops

我在Objective c中有一个数组,其内容如下:

 reg_nr = 0002,          valor = 00010,       nomtech  =  ab-dd 
 reg_nr = 0002,          valor = 00020,       nomtech  =  ab-dt 
 reg_nr = 0003,          valor = 00030,       nomtech  =  ab-ds 
 reg_nr = 0003,          valor = 00040,       nomtech  =  ab-jh 

我想从select数组中获取一个值。

例如,如果这是一个列名为

的select语句
reg_nr   valor   nomtech
0002     00010   ab-dd
0002     00020   ab-dt
0003     00030   ab-ds
0003     00040   ab-jh

选择查询为select nomtech from tablename where valor = '00030',我会得到值ab-ds

我如何为上面的数组执行此操作?

编辑 - 澄清 - 这表明数组已经形成 -

SUPObjectList *docs2 = [MMRDS_QSSCabeceraPedido findAll];

// findall is a sap command that returns a list of objects 

    if ([docs2 length] > 0)
    {

        for (MMRDS_QSSCabeceraPedido * oneRec in docs2)
        {
            [array1 addObject:oneRec];

        }

    }

2 个答案:

答案 0 :(得分:2)

看看NSPredicate,它非常类似于'select'语句来过滤数组

答案 1 :(得分:1)

您可以像这样使用NSPredictate:

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains %@", @"valor = 00030"];
    NSArray *filterArray = [array filteredArrayUsingPredicate:predicate];
    NSLog(@"ARRAY: %@", filterArray);

我给你整个对象,如果你想得到nom技术,你可以从过滤后的数组中获取字符串对象,你可以通过','

来破坏它
NSArray *splitArray = [filterArray[0] componentsSeparatedByString:@","];

现在,您可以通过电话

获取您的nom技术
NSString *string = splitArray[2];

此字符串将包含nomtech = ab-dd,因此您必须删除不需要的子字符串。 希望这有帮助。