0

所以基本上我有一个巨大的数组数组(只有一个二维数组)......

我的根数组可以说有 100 个子数组...

我想查询根/子数组并仅返回其 2 对象等于 hello 的子数组...

所以基本上我在下面有一个虚构的想法......

updatedArray = [rootArray WHERE childArray objectAtIndex:2 == @"hello"];

现在如您所见,我希望更新后的数组在 rootArray 中包含 40 或 50 个子数组...

明白我的意思——它有点像 MySQL,只有数组而不是数据库?

4

2 回答 2

3

试试这个:

NSMutableArray *updated = [[NSMutableArray alloc] init];
for (NSArray *a in rootArray)
{
    if ([[a objectAtIndex:2] isEqualToString:@"hello"])
        [updated addObject:a];
}

现在updated将包含rootArray第三个对象为的数组@"hello"

不要忘记在使用后释放它(如果你不使用 ARC)。

您还可以将谓词用于简单的逻辑;请参阅NSPredicate 类。

于 2012-07-03T20:26:08.277 回答
2

您可以使用 过滤数组NSPredicate,如下所示:

NSArray *data = [NSArray arrayWithObjects:
    [NSArray arrayWithObjects:@"One", @"Two", nil]
,   [NSArray arrayWithObjects:@"Three", @"Four", nil]
,   [NSArray arrayWithObjects:@"Nine", @"Two", nil]
,   nil];
NSPredicate *filter = [NSPredicate predicateWithBlock:^BOOL(id array, NSDictionary *bindings) {
    // This is the place where the condition is specified.
    // You can perform arbitrary testing on your nested arrays
    // to determine their eligibility:
    return [[array objectAtIndex:1] isEqual:@"Two"];
}];
NSArray *res = [data filteredArrayUsingPredicate:filter];
NSLog(@"%lu", res.count); 
于 2012-07-03T20:40:14.327 回答