2017-11-06 21 views
1

여러 배열 값을 단일 배열로 병합하는 문제를 해결했습니다. 배열은 다음과 같습니다array1과 array2 값을 array3에 병합합니다. objective c

array1 
(

{ 
    Id = 10166; 
    Name = "Paul"; 
}, 
{ 
    Id = 10167; 
    Name = "Dipleep"; 
}, 
{ 
    Id = 10168; 
    Name = "John"; 

} 
) 

array 2 
(
{ 

    Country = USA; 
}, 
{ 

    Country = India; 
}, 
{ 

    Country = USA; 

} 
) 

array3 

(
{ 
    Id = 10166; 
    Name = "Paul"; 
    Country = USA; 
}, 
{ 
    Id = 10167; 
    Name = "Dipleep"; 
    Country = India; 
}, 
{ 
    Id = 10168; 
    Name = "John"; 
    Country = USA; 

} 
) 

내가 수행하는 방법에 아무 생각이 없지만 같은 비트 시도 :

NSMutableArray *newArr = [[NSMutableArray alloc]init]; 

[newArr addObjectsFromArray:cartArray]; 
[newArr addObjectsFromArray:couponsArray]; 

을하지만, 잘못에 추가. 여러 배열 값을 다른 배열에 결합하는 해결책을 찾아 주시겠습니까? TIA

+0

"하지만 잘못 추가하는 중입니다 ..."나는 그것을 얻지 못했습니다. 문제를 설명해 주시겠습니까? –

+0

"into array3", array1과 array2를 사용하여 array3을 올바르게 만들겠습니까? for 루프를 수행하고 각 값으로 새로운 dict를 작성하십시오. – Larme

+0

예 @ 라르 메. 귀하의 제발 그것을 할 방법을 말해 줄 수 – Rajeev

답변

1

당신은 같이 할 수있는,

for (int i = 0; i < array1.count; i++) { 


    NSString *idOfObj = [[array1 objectAtIndex:i] objectForKey:@"Id"]; 
    NSString *name = [[array1 objectAtIndex:i] objectForKey:@"Name"]; 
    NSString *country = [[array2 objectAtIndex:i] objectForKey:@"Country"]; 

    NSDictionary *dic = @{@"Id" :idOfObj,@"Name" : name,@"Country" : country}; 

    [array3 addObject:dic]; 
} 

NSLog(@"result array : %@",array3); 
+0

고마워요 나를 위해 일했습니다 – Rajeev

+0

당신은 오신 것을 환영합니다 :) – Lion

1

이 매우 간단한 작업은 다음과 같습니다 당신은 array1에서 개체의 값을 결합 새 사전을 생성하고 같은 인덱스 array2에서, 반복.

NSMutableArray *array3 = [[NSMutableArray alloc] init]; 
for (NSUInteger i = 0; i < [array1 count]; i ++) 
{ 
    NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init]; 
    [tempDict addEntriesFromDictionary:array1[i]]; 
    [tempDict addEntriesFromDictionary:array2[i]]; 
    [array3 addObject:tempDict]; 
} 

간단 할 수도 있지만 충돌이 발생할 수있는 몇 가지 문제가 있습니다. 이 경우에는 해당되지 않지만 같은 질문을 가진 다른 사용자는 가능합니다. 무엇 array1[n] 경우 키 •
array2[n]와 공통 키를 가지고 :

그래서 지금, 당신은 생각 무엇을해야합니까? 사전의 키는 고유하기 때문입니다. 따라서 값이 대체됩니다 (addEntriesFromDictionary:의 문서 확인)
[array1 count][array2 count]과 다른 경우 어떻게됩니까? 예 : 범위 초과 문제로 인해 for loop이 중단 될 수 있습니다.
• 처음에는 데이터를 이렇게 구분하는 이유는 무엇입니까? 그것들을 "재 동기화"하려고합니다. 그러나 그것들이 올바르게 동기화되었는지 확신합니까? 내 말은, 그 array1[n] 값은 실제로 array2[n]에 해당하며 array2[m] 값에 해당하지 않습니까? 특히 비동기로 가져 오는 경우 ...