2014-07-07 13 views
1

plist에서 데이터를 가져 와서 코어 데이터에 샘플 데이터를 삽입하려고합니다. 하지만 데이터가 순서대로 삽입되지 않습니다.데이터가 iOS에서 정렬되지 않은 방식으로 삽입되고 있습니다.

아래는 내 plist 구조체입니다. 다음은

Plist structure

내가 노력 코드입니다.
NSArray *aArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"SampleData" ofType:@"plist"]]; 

    for (NSDictionary *aDict in aArray) 
    { 

     [aDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) 
     { 
      //--- UPDTATE -->> 
      // while debugging I found one issue that - 
      //Here "obj" has three array - Sample List 1C,Sample List 1A,Sample List 1B 
      // This should be Sample List 1A,Sample List 1B,Sample List 1C 

      NSDictionary *aSubDict = (NSDictionary *)obj; 
      NSMutableArray *aMutCheckpoint = [NSMutableArray array]; 

      //.… below is my logic for core data insertion… 

     }]; 
    } 

어느 한 나에게 데이터를 삽입하는 동안 내가 여기에 값을 주문받을 어떻게하는 방법을 제안 해주십시오 수 있습니다.

+1

는 저장 키 - 값 쌍에 올 때 NSDictionary에 순서를 제공하지 않습니다 – ZeMoon

+1

http://stackoverflow.com/questions/ 1295459/are-keys-and-nsdictionary- – ZeMoon

+0

은 집합과 해시 맵/사전이 작동하는 방식입니다. –

답변

2

NSDictionary의 값을 고정 된 순서로 검색하려면 해당 값을 검색하는 데 사용되는 키를 정렬해야합니다. 이는 사전이 근본적으로 정렬되지 않은 데이터 구조이기 때문입니다.

그래서 여기 하나의 방법입니다 (키를 정렬하는 다른 방법이 있습니다) :

for (NSDictionary *aDict in aArray) 
{ 
    NSArray *sortedKeys = [[aDict allKeys] sortedArrayUsingSelector:@selector(compare:)]; 
    for (NSString *key in sortedKeys) 
    {   
     id obj = aDict[key]; 
     // etc. 
    } 
} 
+0

@iLearner Nothing. 기본 구현은 정상적으로 작동합니다. – trojanfoe

+0

좋습니다. 시도 할 것입니다. 빠른 응답을 주셔서 감사합니다. – iLearner

+0

나는 이것을 시도했지만 여전히 출력을 1,2,3으로 기대하면서 -> 3,1,2와 같은 순서가 같지 않다. 제발 제안 해주세요. – iLearner