如何在 objective c 中连接两个可变数组,例如第一个数组的一个元素和第二个数组的第一个元素

How to concatenate two mutable array like one element of first array and first element of second array in objective c

我是新来的 iOS.And 我是这样做的

NSMutableArray* arr1 = [NSMutableArray arrayWithObjects: @"A", @"C", @"E", nil];
NSMutableArray* arr2 = [NSMutableArray arrayWithObjects: @"B", @"D", @"F", nil];
NSMutableArray* animals = [NSMutableArray arrayWithArray:arr1];
[animals addObjectsFromArray: arr2];

它给我的输出就像 乙二胺

但我需要像这样的输出 ABCDEF

任何提示

我试过now.I得到it.Check下面的answer.You必须简单地使用sortDescriptor。

NSMutableArray* arr1 = [NSMutableArray arrayWithObjects: @"A", @"C", @"E", nil];
NSMutableArray* arr2 = [NSMutableArray arrayWithObjects: @"B", @"D", @"F", nil];
NSMutableArray* animals = [NSMutableArray arrayWithArray:arr1];
[animals addObjectsFromArray: arr2];

NSArray *sortedArray = [animals sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
NSLog(@"The sortedArrays are - %@",sortedArray);

打印出来的结果是

The sortedArrays are - (
A,
B,
C,
D,
E,
F
)

循环播放

NSMutableArray* arr1 = [NSMutableArray arrayWithObjects: @"A", @"C", @"E", nil];
NSMutableArray* arr2 = [NSMutableArray arrayWithObjects: @"B", @"D", @"F", nil];
NSMutableArray* animals = [NSMutableArray new];

NSUInteger maxCount = arr1.count > arr2.count ? arr1.count : arr2.count;
for (int i = 0; i < maxCount; i ++) {
    if ([arr1 objectAtIndex:i]) {
        [animals addObject:[arr1 objectAtIndex:i]];
    }
    if ([arr2 objectAtIndex:i]) {
        [animals addObject:[arr2 objectAtIndex:i]]
    }
}

这适用于所有类型的数组。

试试这个 -

NSMutableArray* arr1 = [NSMutableArray arrayWithObjects: @"A", @"C", @"E", nil];
    NSMutableArray* arr2 = [NSMutableArray arrayWithObjects: @"B", @"D", @"F", nil];
    NSUInteger maxCount = arr1.count > arr2.count ? arr1.count : arr2.count;
    NSMutableArray* animals = [[NSMutableArray alloc] init];

    for (int i=0; i<maxCount; i++)
    {
        if (i<arr1.count) {
            [animals addObject:[arr1 objectAtIndex:i]];
        }
        if (i<arr2.count) {
            [animals addObject:[arr2 objectAtIndex:i]];
        }

    }

添加另一个答案只是为了好玩。

NSMutableArray* arr1 = [NSMutableArray arrayWithObjects: @"A", @"C", @"E", nil];
NSMutableArray* arr2 = [NSMutableArray arrayWithObjects: @"B", @"D", @"F", nil];
NSMutableArray* animals = [NSMutableArray new];

NSInteger minCount;
NSMutableArray *maxArray;

if (arr1.count < arr2.count) {
    minCount = arr1.count;
    maxArray = arr2;
}
else {
    minCount = arr2.count;
    maxArray = arr1;
}

for (int i = 0; i < minCount; i++) {
    [animals addObject:arr1[i]];
    [animals addObject:arr2[i]];
}

NSInteger pendingItemsLength;
if ((pendingItemsLength = maxArray.count - minCount)) {
    [animals addObjectsFromArray:[maxArray subarrayWithRange:NSMakeRange(minCount, pendingItemsLength)]];
}

这比接受的答案更有效,因为它避免了 for 循环中的 if 条件。