Objective-C 将对象放入每个数组
Objective-C place object into each array
我是 Objective-C 和 iOS 的新手。
我有一个 NSMutableArray 180 objects.They 都排序了。
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:180];
for (int i = 0; i < 180; i ++) {
NSString *string = [NSString stringWithFormat:@"%d",i+1];
[array addObject:string];
}
现在,我想将它们放入一个 NSArray 中,这个 NSArray 是一个包含五个对象的数组。(我的意思是每个数组包含 5 个对象)。我想出了两种方法。
方法一
NSMutableArray *outer = [[NSMutableArray alloc] init];
NSMutableArray *inner = [[NSMutableArray alloc] initWithCapacity:5];
for (id object in array)
{
int i = 0;
[inner addObject:object];
if (i % 5 == 0) {
[outer addObject:inner];
}
i ++;
}
NSLog(@"%@",outer);
方法二
NSMutableArray *outer = [[NSMutableArray alloc] init];
NSMutableArray *inner = [[NSMutableArray alloc] initWithCapacity:5];
for (int i = 0; i < 180; i ++)
{
if (i % 5 == 0 && i != 0) {
[outer addObjectsFromArray:inner];
[inner removeAllObjects];
[inner addObject:array[i]];
}else{
[inner addObject:array[i]];
}
}
NSLog(@"%@",outer);
我该怎么做?提前致谢。
第一种方法是最简单的,你走在了正确的轨道上。
但是,有一些问题:
我每次都被设置为 0。需要在外面声明。
NSMutableArray *outer = [[NSMutableArray alloc] init];
NSMutableArray *inner = nil;
int i = 0;
for (id object in array)
{
if (inner = nil) {
inner = [[NSMutableArray alloc] init];
}
[inner addObject:object];
i ++;
if (i % 5 == 0) {
[outer addObject:inner];
inner = nil;
i = 0;
}
}
- (NSArray *)Addarraydata : (NSMutableArray *) inputArray{
NSMutableArray * arrNewArray = [NSMutableArray array];
for(int i = 0; i < [inputArray count]; i = i + 5){
if((i + 5) < [inputArray count]){
[arrNewArray addObject:[inputArray subarrayWithRange:NSMakeRange(i, 5)]];
}else{
[arrNewArray addObject:[inputArray subarrayWithRange:NSMakeRange(i, ([inputArray count] - i))]];
}
}
NSLog(@"arrNewArray = %@",arrNewArray);
return arrNewArray;
}
NSMutableArray *outer = [[NSMutableArray alloc] init];
for (int i = 0; i < [array count] / 5; i++) {
[outer addObject:[array subarrayWithRange:NSMakeRange(i*5, 5)]];
}
如果数组可以是 5 的非倍数并且你想得到其余的,你可以在 for 循环之后添加:
NSUInteger rest = [array count] % 5;
if (rest != 0) {
[outer addObject:[array subarrayWithRange:NSMakeRange([array count] / 5 * 5, rest)]];
}
我是 Objective-C 和 iOS 的新手。
我有一个 NSMutableArray 180 objects.They 都排序了。
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:180];
for (int i = 0; i < 180; i ++) {
NSString *string = [NSString stringWithFormat:@"%d",i+1];
[array addObject:string];
}
现在,我想将它们放入一个 NSArray 中,这个 NSArray 是一个包含五个对象的数组。(我的意思是每个数组包含 5 个对象)。我想出了两种方法。
方法一
NSMutableArray *outer = [[NSMutableArray alloc] init];
NSMutableArray *inner = [[NSMutableArray alloc] initWithCapacity:5];
for (id object in array)
{
int i = 0;
[inner addObject:object];
if (i % 5 == 0) {
[outer addObject:inner];
}
i ++;
}
NSLog(@"%@",outer);
方法二
NSMutableArray *outer = [[NSMutableArray alloc] init];
NSMutableArray *inner = [[NSMutableArray alloc] initWithCapacity:5];
for (int i = 0; i < 180; i ++)
{
if (i % 5 == 0 && i != 0) {
[outer addObjectsFromArray:inner];
[inner removeAllObjects];
[inner addObject:array[i]];
}else{
[inner addObject:array[i]];
}
}
NSLog(@"%@",outer);
我该怎么做?提前致谢。
第一种方法是最简单的,你走在了正确的轨道上。
但是,有一些问题:
我每次都被设置为 0。需要在外面声明。
NSMutableArray *outer = [[NSMutableArray alloc] init];
NSMutableArray *inner = nil;
int i = 0;
for (id object in array)
{
if (inner = nil) {
inner = [[NSMutableArray alloc] init];
}
[inner addObject:object];
i ++;
if (i % 5 == 0) {
[outer addObject:inner];
inner = nil;
i = 0;
}
}
- (NSArray *)Addarraydata : (NSMutableArray *) inputArray{
NSMutableArray * arrNewArray = [NSMutableArray array];
for(int i = 0; i < [inputArray count]; i = i + 5){
if((i + 5) < [inputArray count]){
[arrNewArray addObject:[inputArray subarrayWithRange:NSMakeRange(i, 5)]];
}else{
[arrNewArray addObject:[inputArray subarrayWithRange:NSMakeRange(i, ([inputArray count] - i))]];
}
}
NSLog(@"arrNewArray = %@",arrNewArray);
return arrNewArray;
}
NSMutableArray *outer = [[NSMutableArray alloc] init];
for (int i = 0; i < [array count] / 5; i++) {
[outer addObject:[array subarrayWithRange:NSMakeRange(i*5, 5)]];
}
如果数组可以是 5 的非倍数并且你想得到其余的,你可以在 for 循环之后添加:
NSUInteger rest = [array count] % 5;
if (rest != 0) {
[outer addObject:[array subarrayWithRange:NSMakeRange([array count] / 5 * 5, rest)]];
}