如何在 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 条件。
我是新来的 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 条件。