如何获取另一个数组中存在的每个数组的对象数?

时间:2014-02-08 03:16:54

标签: ios arrays

  NSMutableArray*array1=[NSMutableArray arrayWithObjects: @"1", @"2", @"3", nil];
  NSMutableArray*array2=[NSMutableArray arrayWithObjects: @"A", @"B", @"C",@"D", nil];
  NSMutableArray*array2=[NSMutableArray arrayWithObjects: @"AA", @"BB", @"CC", nil];

  NSMutableArray*MasterArray=[NSMutableArray arrayWithObjects: array1,array2,array3, nil];

如何获取MasterArray中每个数组的对象数?

3 个答案:

答案 0 :(得分:3)

如果不是你想要的,请告诉我。

[MasterArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    if ([obj isKindOfClass:[NSArray class]]) {
        NSLog(@"%lu", [obj count]) ;
    }
}] ;

答案 1 :(得分:1)

您可以使用快速枚举...

for(NSArray* array in MasterArray) {
    NSLog(@"array:%@ count:%d", array, [array count]);
}

答案 2 :(得分:0)

我想在这里指出一些事情。首先,使用数组文字可以大大简化您发布的代码。

NSMutableArray *array1 = [@[@"1",@"2",@"3"] mutableCopy];
NSMutableArray *array2 = [@[@"A",@"B",@"C",@"D"] mutableCopy];
NSMutableArray *array3 = [@[@"AA",@"BB",@"CC"] mutableCopy];

NSMutableArray *masterArray = [@[array1,array2,array3] mutableCopy];

然后就是你MasterArray的命名问题。在Objective-C中,通常对实例使用lowerCamelCase格式,对类使用UpperCamelCase。符合这种风格有助于提高代码的可读性。

现在,关于你的实际问题。如果只通过访问其count属性就可以获得数组的计数,那么就没有理由需要专门用于访问数组的命名变量。考虑以下两种实现来访问数组中第一个子数组的计数。他们都做同样的事情:

NSArray *arr = @[subArray1,subArray2,subArray3];
NSArray *sub1 = arr[0];
NSUInteger countOfSub1 = sub1.count;

NSArray *arr = @[subArray1,subArray2,subArray3];
NSUInteger count = [arr[0] count];

那么如果你想获得主数组中每个子数组的计数,你可以在循环中实现相同的功能。

for(NSMutableArray *subArray in masterArray) {
    NSUInteger count = subArray.count;
}