2011-08-05 12 views
14

CHCSVParser'u iPhone uygulamamda uygularım (teşekkürler Dave!) Ancak gerçekten nasıl kullanacağım konusunda kafam karıştı. Oku okudum ve SO üzerine bazı sorular aradım ama hala ne yapacağımı% 100 emin değilim.Temel Bilgiler Giriş CHCSVParser'ı Kullanmak için

5000 satırlık veri ve 3-4 sütun içeren bir .CSV dosyasına sahibim.

Bu verilerin karşılığında sıralanmasını istiyorum, UITableView ürününü karşılık gelen detailViewController ile birlikte yükleyin.

Yani, bir şekilde API'nın dizi yöntemini uygulamak zorunda olduğumu farz ediyorum ama herkes başlamamda yardımcı olabilir mi?

cevap

30

Ben bunu Temelde

, sadeceCHCSVParser CSV dosyalarını ayrıştırır :) gibi sevindim. Bir CSV dosyasına bir yol verirsin ve size bir sürü NSStrings verir. Bu noktanın ötesinde yaptığınız şey tamamen size kalmış.

Yani, iOS uygulamanızda "Data.csv" adında bir CSV dosyası eklediğinizi varsayalım. İşte bunu ayrıştırmak için CHCSVParser şekilde kullanmalısınız:

Bu noktada
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 bir dizidir. rows'daki her elemanın kendisi, CSV dosyasında tek bir satırı temsil eden bir dizidir. Ve öğesinin her bir öğesi dizisinin NSString olduğunu.

Öyleyse CSV dosyası şöyle diyelim: Çözümleyici aracılığıyla çalıştırırsanız, bu eşdeğer geri döneceğiz

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]; 

sen ne yapacaksın o zaman senin işin. Eğer ilgilenen rahat edeceğiniz şekilde bu verileri ve yeniden yapı sürer olsun böylece CSV ayrıştırıcı, bir şey hakkında UITableView bilmiyor ve bu veri modeline uyar. Ayrıca, CHCSVParser kullanarak, the terms under which it is made available'a uymayı kabul ettiğinizi unutmayın. :)

+0

Teşekkürler, Dave, bu çok yardımcı oluyor! Peki bu yöntemi uygulamak için en uygun yer nerede benim tablo VC's viewDidLoad' yöntemine? Ve API otomatik olarak bilir ki, '' 'içinde iki' '' ', bu tek bir dizgidir? – Jon

+0

@Jon Bu, düzeltdiğim bir yazım hatasıydı. Re: en iyi yer? İçinde bir VC onu koymak için iyi bir yer olduğunu düşünüyorum. Bunu koymak için en iyi yer, uygulamanıza tamamen bağlı bir şeydir. :) –

+0

Teşekkürler Dave. Bunu ViewDidLoad'da yapmayı denedim, ancak uygulamanın açılmasının sonsuza kadar sürmesi gerekiyor. Başka takılmalarınız var mı? Simülatörde iyi çalışıyor, ancak cihazımda uygulamanın açılacağı 30 sn. İlk tabloyu yüklemek için bu verilere ihtiyacım var. – Jon

İlgili konular