2011-08-05 41 views
14

我正在實施CHCSVParser進入我的iPhone應用(感謝Dave!),但是我對如何使用它非常困惑。我已經閱讀了我的文章,並在SO上搜索了一些問題,但仍然不能100%確定要做什麼。基礎知識介紹使用CHCSVParser

我有一個.CSV文件,可能有5000行數據和3-4列。

我想要這個數據作爲回報,加載我的UITableView及其相應的detailViewController。

所以我假設我需要以某種方式實現API的數組方法,但任何人都可以幫助我開始?

回答

30

我很高興你喜歡它:)

基本上CHCSVParser只有解析CSV文件。你給它一個CSV文件的路徑,它會給你一大堆NSStrings。除此之外你所做的完全取決於你。

因此,假設您已將CSV文件包含在iOS應用中,名爲「Data.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

謝謝,戴夫,這有助於很多!那麼實現這個方法的最好的地方在哪裏,在我的表VC的'viewDidLoad'方法中?並且API自動地知道,當兩個''「內有','這個全部是一個字符串? – Jon

+0

@Jon這是我修正的一個錯字。 Re:最好的地方?我想,在風險投資公司內部是一個體面的地方。最好的地方是完全取決於你的應用程序。 :) –

+0

謝謝戴夫。我試圖在ViewDidLoad中做,但它現在需要永久打開應用程序。你有其他建議嗎?它在模擬器中工作正常,但在我的設備上,需要30秒才能打開應用程序。我需要這些數據來加載最初的tableView。 – Jon