2010-02-03 3 views
1

Objective-C에서 파일의 내용을 읽는 것이지만 해시 테이블의 입력으로 가져 오는 방법은 알고 있습니다. 지금은 키 값 쌍으로 내 해시 테이블에이 글을 읽을 필요가있는 test.txtObjective-C에서 해시 테이블의 입력 내용으로 파일 내용

LENOVA 
HCL 
WIPRO 
DELL 

같은 텍스트 파일의 내용을 고려

KEY VAlue 

    1  LENOVA 
    2  HCL 
    3  WIPRO 
    4  DELL 
+4

가 단지 배열이 아닌가요? 키순과 동일한 순서로 읽는 경우 해시 테이블을 구현할 필요가 없습니다. – dreamlax

답변

0

당신은 문자열의 배열로 파일을 구문 분석 할 및 이 배열의 각 요소에 키를 할당하십시오. 이것은 올바른 방향으로 나아갈 수 있도록 도와줍니다.


NSString *wholeFile = [NSString stringWithContentsOfFile:@"filename.txt"]; 
NSArray *lines = [wholeFile componentsSeparatedByString:@"\n"]; 
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:[lines count]]; 
int counter = 1; 

for (NSString *line in lines) 
{ 
    if ([line length]) 
    { 
     [dict setObject:line forKey:[NSString stringWithFormat:"%d", counter]]; 

//  If you want `NSNumber` as keys, use this line instead: 
//  [dict setObject:line forKey:[NSNumber numberWithInt:counter]]; 

     counter++; 
    } 
}

파일을 구문 분석하는 가장 효율적인 방법은 아닙니다. 또한 사용되지 않는 방법 stringWithContentsOfFile:을 사용합니다.

다시 선을 얻기 위해 사용

NSString *myLine = [dict objectForKey:@"1"]; 

// If you used `NSNumber` class for keys, use: 
// NSString *myLine = [dict objectForKey:[NSNumber numberWithInt:1]]; 
+0

'stringWithContentsOfFile :'은'stringWithContentsOfFile : usedEncoding : error :'를 사용하지 않아 파일을 읽을 때 어떤 인코딩이 감지되었는지에 대한 정보를 제공하고 파일을 읽는 데 실패했을 때'NSError' 객체를 반환합니다. – dreamlax

+0

이봐 ..이게 어떻게 우리가 해시 테이블의 내용을 확인하는거야 ??"NSLog (@"1 = % @ ", [dict objectForKey : @"1 "]))" – suse

+0

@suse, 꽤 위와는 달리 NSNumber 클래스를 키로 사용했지만, 'NSString'을 키로 사용하려고합니다. NSString을 키로 사용하려면'setObject : forKey :'부분을 변경해야합니다. 더 도움이 될 답변을 편집했습니다. – dreamlax