2017-12-15 38 views
-1

안녕하세요이 형식의 배열을 만들 필요가있는 나는이 프로젝트에 참여하고있는 모든 :아이폰 OS : 주어진 형식으로 구조화있는 NSArray 만들기

{ 
      "1": { 
       "Child_Gender": "", 
       "Child_DOB": "", 
       "Child_tobbacoUse": "" 
      }, 
      "2": { 
       "Child_Gender": "", 
       "Child_DOB": "", 
       "Child_tobbacoUse": "" 
      }, 

하지만 난 만들 배열이 형식을 제공을

(
     { 
     "Child_DOB" = ""; 
     "Child_Gender" = ""; 
     "Child_tobbacoUse" = ""; 
    }, 
     { 
     "Child_DOB" = ""; 
     "Child_Gender" = ""; 
     "Child_tobbacoUse" = ""; 
    } 
) 

for (int i = 0; i < arrayChildModel.count; i++) 
    { 
     ChildModel *model = [arrayChildModel objectAtIndex:i]; 
     NSString *keyOrder = [NSString stringWithFormat:@"Children_Gender[%d]",i]; 
     NSString *keyQuantity = [NSString stringWithFormat:@"Children_BirthDate[%d]",i]; 
     NSString *keyTobacco = [NSString stringWithFormat:@"Children_HasTobaccoUsage[%d]",i]; 

     //NSString *keyNotes = [NSString stringWithFormat:@"row[%d][description]",i]; 
     childDateOfBirthStr = model.ChildBirthDate ; 
     childGenderStr = model.ChildGender ; 
     childTobaccoStr = model.ChildTobaccoUsage; 


      NSString *string1 = [NSString stringWithFormat:@"%@=%@&",keyOrder,childGenderStr]; 
      NSString *string2 = [NSString stringWithFormat:@"%@=%@",keyQuantity,childDateOfBirthStr]; 
      NSString *string3 = [NSString stringWithFormat:@"%@=%@",keyTobacco,childTobaccoStr]; 
      [stringParams appendString:string1]; 
      [stringParams appendString:string2]; 
      [stringParams appendString:string3]; 


      NSDictionary * ChildDict; 
      NSArray * ApplicantKeys = [[NSArray alloc]initWithObjects:@"Child_Gender",@"Child_DOB",@"Child_tobbacoUse", nil]; 
      NSArray * ApplicantObjects = [[NSArray alloc]initWithObjects:childGenderStr,childDateOfBirthStr,childTobaccoStr, nil]; 
      ChildDict = [NSDictionary dictionaryWithObjects:ApplicantObjects forKeys:ApplicantKeys]; 
      NSLog(@"Dictionary is %@",ChildDict); 
      [CompleteArray addObject:ChildDict]; 

    } 
    NSLog(@"Final Array is %@",CompleteArray); 

필요한 포맷으로 출력 배열을 변환하는 데 도움하십시오

난 다음 코드를 사용하고 배열

+0

해당 배열이 사전이 아닙니다. 사전 작성자처럼 생각하십시오. – Bimawa

답변

0

는 예상 출력으로 당신을 줄 것이다 다음과 같은 솔루션을 확인하시기 바랍니다 NSLog(@"Dictionary is %@",ChildDict);

[dict setObject:ChildDict forKey:[NSString stringWithFormat:@"%ld",i+1]]; 
[CompleteArray addObject:dict]; 
+0

이 오류는 [<__ NSDictionary0 0x600000013240> setValue : forUndefinedKey :] :이 클래스는 키 1에 대해 키 값 코딩을 준수하지 않습니다. –

+0

NSDictionary는 변경할 수 없으며 NSMutableDictionary를 대신 사용하십시오. – Bimawa

+0

업데이트 된 답변 확인. –

0

전에

NSMutableDictionary *dict =[[NSMutableDictionary alloc]init]; 

이 줄을 추가 루프

에 대해 하나 개의 사전 외부를 만듭니다.

 NSMutableDictionary *resultDic = [NSMutableDictionary new]; 
    for (int i = 0; i < arrayChildModel.count; i++) 
    { 


      ChildModel *model = [arrayChildModel objectAtIndex:i]; 
      NSString *keyOrder = [NSString stringWithFormat:@"Children_Gender[%d]",i]; 
      NSString *keyQuantity = [NSString stringWithFormat:@"Children_BirthDate[%d]",i]; 
      NSString *keyTobacco = [NSString stringWithFormat:@"Children_HasTobaccoUsage[%d]",i]; 

      //NSString *keyNotes = [NSString stringWithFormat:@"row[%d][description]",i]; 
      childDateOfBirthStr = model.ChildBirthDate ; 
      childGenderStr = model.ChildGender ; 
      childTobaccoStr = model.ChildTobaccoUsage; 


      NSString *string1 = [NSString stringWithFormat:@"%@=%@&",keyOrder,childGenderStr]; 
      NSString *string2 = [NSString stringWithFormat:@"%@=%@",keyQuantity,childDateOfBirthStr]; 
      NSString *string3 = [NSString stringWithFormat:@"%@=%@",keyTobacco,childTobaccoStr]; 
      [stringParams appendString:string1]; 
      [stringParams appendString:string2]; 
      [stringParams appendString:string3]; 


      NSDictionary * ChildDict = [NSDictionary dictionaryWithObjectsAndKeys:childGenderStr,@"Child_Gender",childDateOfBirthStr,@"Child_DOB",childTobaccoStr,@"Child_tobbacoUse", nil]; 
      NSLog(@"Dictionary is %@",ChildDict); 

      NSString *resultDicKey = [NSString stringWithFormat:@"%d",i+1]; 
      [resultDic setValue:ChildDict forKey:resultDicKey]; 

    } 

    NSLog(@"Result dic %@",resultDic); 
+0

그것의 작동하지 않는다 –

+0

당신의 o/p를 보여주세요 –

+0

편집 된 답변을 확인하십시오 –