2012-02-24 3 views
2

내 번들에 큰 텍스트 리소스가 있습니다.큰 텍스트 리소스에서 iOS의 배열로 읽기

0,1,100,2.2345 

과 같은 줄을 포함하는 CSV입니다. 9MB가 넘습니다.

myObject->initData(col0, col1, col2, col3); 

(. 단지 파일의 정수에 의해 색인 다차원 배열의 숫자 중 하나에 부동 소수점 값을 거즈 어떤)

: 어떻게 내가 뭔가를 할 수 있습니다에서 열 순차적으로 읽을 수있는 가장 좋은 방법입니다

[NSString stringWithContentsOfFile:]을 사용하여 문자열로 읽으려고 시도했는데 NSScanner을 사용하여 루프를 시도했지만 일시적으로 메모리 사용량을 두 배로 늘리고 싶지 않습니다. 그것은 또한 아주 느렸다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

감사

답변

3

당신은 점진적으로 읽어 NSFileHandle 또는 C API를 사용하거나 NSData와 mmap를 사용할 수 있습니다.

나머지는 기본 cstring 버퍼 처리 또는 NSString 줄 단위로 사용할 수 있습니다.

CSV가 아닌 이진 수레의 시퀀스로 내보낼 수 있다면 더 쉽습니다.

+0

감사합니다. 메모리 매핑 된 데이터를 사용하고 싶지 않으므로 NSFileHandle 접근 방식을 시도하고 순차적으로 읽습니다. 다른 사람들이 다른 아이디어를 가지고 있는지를보기 위해 하루 정도 동안 열어 두도록하자. (나는 당신이 생각할 수있는 모든 기반을 다루었지만 결코 알지 못한다는 것을 의미한다.) –

+0

C 버퍼 넘김 ('fopen','fgets' 등). 감사. –

+0

@Tim Kemp Cool - 오신 것을 환영합니다! – justin