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中每个数组的对象数?
答案 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;
}