2011-08-05 3 views
14

내 iPhone 응용 프로그램에 CHCSVParser을 구현하고 있습니다. (덕분에 Dave!) 그러나 사용 방법에 대해서는 정말 혼란 스럽습니다. 나는 read-me를 읽었으며 SO에 대한 몇 가지 질문을 검색했지만 여전히 100 % 확실하지 않습니다.기본 소개 CHCSVParser 사용

어쩌면 5000 행의 데이터와 3-4 열을 가진 .CSV 파일이 있습니다.

이 데이터를 반환하려면 해당하는 detailViewController와 함께 UITableView를로드하십시오.

그래서 어떻게 든 API의 배열 메소드를 구현해야한다고 생각하지만 아무도 나를 시작할 수 있도록 도와 줄 수 있습니까?

답변

30

나는 당신이 기본적으로

, CHCSVParser는 CSV 파일을 구문 분석 :) 좋아 기뻐요. CSV 파일의 경로를 지정하면 NSStrings의 전체 묶음을 다시 제공합니다. 그 시점 너머에서하는 일은 전적으로 당신에게 달린 것입니다.

iOS 앱에 'Data.csv'라는 CSV 파일이 포함되어 있다고 가정 해 보겠습니다. 여기 당신이 그것을 구문 분석 CHCSVParser을 사용하십시오 방법은 다음과 같습니다

이 시점에서
NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"csv"]; 

NSError *error = nil; 
NSArray *rows = [NSArray arrayWithContentsOfCSVFile:path encoding:NSUTF8StringEncoding error:&error]; 
if (rows == nil) { 
    //something went wrong; log the error and exit 
    NSLog(@"error parsing file: %@", error); 
    return; 
} 

, rows는 배열입니다. rows의 각 요소는 그 자체로 CSV 파일의 단일 행을 나타내는 배열입니다. 의 각 요소가 인 배열은 NSString입니다.

그럼 CSV 파일은 다음과 같습니다 가정 해 봅시다 : 당신이 파서를 통해 실행하는 경우, 당신은이 동등한를 다시 얻을 것이다

Barringer,Arizona,United States,Earth 
"Chicxulub, Extinction Event Crater",,Mexico,Earth 
Tycho,,,Moon 
Lonar,Maharashtra,India,Earth 

:

[NSArray arrayWithObjects: 
[NSArray arrayWithObjects:@"Barringer",@"Arizona",@"United States",@"Earth",nil], 
[NSArray arrayWithObjects:@"Chicxulub, Extinction Event Crater",@"",@"Mexico",@"Earth",nil], 
[NSArray arrayWithObjects:@"Tycho",@"",@"",@"Moon",nil], 
[NSArray arrayWithObjects:@"Lonar",@"Maharashtra",@"India",@"Earth",nil], 
nil]; 

당신이 함께 할 무엇 그것은 당신의 사업입니다. CSV 파서는 UITableView에 대해 알지 못하므로이 데이터를 가져 와서 다루기가 쉽고 데이터 모델에 적합한 방식으로 데이터를 다시 구성해야합니다.

또한 CHCSVParser을 사용하면 the terms under which it is made available을 준수하는 데 동의하게됩니다. :)

+0

감사합니다. Dave, 많이 도움이됩니다. 그래서 내 테이블 VC의'viewDidLoad' 메쏘드에이 메소드를 구현하는 가장 좋은 장소는 어디입니까? 그리고 API는 자동적으로 두 개의''''안에','이있을 때 그것이 모두 하나의 문자열이라는 것을 알고 있습니다. – Jon

+0

@Jon 그 말은 제가 고쳐 쓴 오타였습니다. 재 : 최고의 장소? 벤처 기업 내부는 괜찮은 곳입니다. 가장 좋은 장소는 앱에 전적으로 달려있는 것입니다. :) –

+0

감사 데이브. ViewDidLoad에서 해보려고했지만 앱이 지금 열리려면 영원히 필요합니다. 당신은 다른 sugggestions가 있습니까? 그것은 시뮬레이터에서 잘 작동하지만 내 장치에서 응용 프로그램을 열려면 30 초가 걸립니다. 초기 tableView를로드하려면이 데이터가 필요합니다. – Jon