2013-02-18 4 views
-3

어떻게하면 NSArray에 줄 단위로 나누어 진 txt 파일의 내용을로드 할 수 있습니까? 기본적으로, 나는 요소의 수를 쓰는 "count.txt"파일을 가지고있다. 첫 번째 줄의 제목을 나타내는 "1t.txt"와 내용을 나타내는 "1.txt"가있다. 값으로 값을 더하는 것입니다.NSArray에서 txt 파일을로드하는 방법은 무엇입니까?

: 사용자가 테이블 뷰의 제목을 칠 때 그런 다음 나는 그가 "* .txt 인"의 내용을 읽고 싶어 지금

(I 배열 파일의 인덱스가 있다면 분명히 쉬운) 나는이 코드를 사용

- (void) loadMainArray 
{ 
    for (int i = 1; i <= max; i++) 
    { 
    NSString *currentNumber; 
    currentNumber = [NSString stringWithFormat:@"%it", i]; 
    NSLog(@"%i° file read", i); 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *dataFilePath = [[NSBundle mainBundle] pathForResource:currentNumber ofType:@"txt"]; 
    if ([fileManager fileExistsAtPath:dataFilePath]) 
    { 
     NSString *content = [NSString stringWithContentsOfFile:dataFilePath encoding:NSUTF8StringEncoding error:nil]; 
     NSArray *parsed = [content componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 
     mainArray = (__bridge NSMutableArray*)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, (CFPropertyListRef)parsed, kCFPropertyListMutableContainers); 
     NSLog(@"%@", parsed); 

    } 
    else{ 
    } 
    } 
} 

(코드가 잘 정렬되어 있지 않지만 너무 많은 stackoverflow에서 사용할 수 없다면 죄송합니다.) 어쨌든 ViewLoad에서이 메서드를 호출하면 Signal SIGABRT가 잘못 표시됩니다.

N.B : 최대 값도 설정되어 있습니다. NSLog에서 확인했습니다. mainArray는 NSMutableArray입니다. 당신이 원하는 무엇

+0

실수로'[[NSString stringWithContentsOfFile : file] componentsSeparatedByString : @ "\ n"]'을 원하지 않습니까? –

+0

그것은 나에게 두 가지 경고를 준다 : 호환되지 않는 포인터 초기화 중 ... stringWithContentsOfFile은 더 이상 사용되지 않는다 .. – user1714647

+1

@userXXX 1. 다음과 같이 1.이 문서에서 비공식 버전의이 메소드를 찾는다. 2. 배열 변수를 대신 배열로 선언한다. 다른 것의. –

답변

5

지정된 구분 기호에서 문자열을 분할합니다

-(NSArray *)componentsSeparatedByString:(NSString *)separator; 

입니다. 그래서 기본적으로 다음과 같이합니다 :  

NSArray *parsed = [content componentsSeparatedByString:@"\n"]; 
//assuming you want a newLine as a separator 

이제 계속 해보세요. 확인

메신저가 아닌 가변 배열에 당신의 다리가 여기에 올바른 : 재미

편집 되세요. 당신이 어떤 필요가 있다면 당신은 항상 나중에 MutableArray 해당 변환 할 수 있습니다

CFPropertyListCreateDeepCopy 

에 호출의 반환 값을 잡으려고을 NSData 객체를 사용해야하는 것으로 보인다. SIGABRT 오류에 대해서도 설명합니다.

+2

+1 ** this **는 OP가 원하는 것입니다. 그는 단지 그것을 인식하지 못합니다. –

+1

남자 나는 바보 같은 기분이 들지만 SIGABRT 오류를 계속주고, 어디서 잘못 되었나요? – user1714647

+0

파일의 하단에 여분의 빈 줄이 없는지 확인하십시오. 그게 항상 내 실수 야! 또한 ** TextEdit **에서 열어 예상대로 형식이 지정되어 있는지 확인하십시오. – msgambel

관련 문제