2011-08-05 17 views
14

Estoy implementando CHCSVParser en mi aplicación de iPhone (gracias Dave!) Sin embargo, estoy muy confundido sobre cómo usarlo. Leí el archivo Léame y busqué algunas preguntas sobre SO, pero todavía no estoy 100% seguro de qué hacer.Conceptos básicos Introducción al uso de CHCSVParser

Tengo un archivo .CSV con quizás 5000 filas de datos y 3-4 columnas.

Quiero recibir estos datos a cambio, cargue mi UITableView junto con su correspondiente detailViewController.

Así que supongo que tengo que implementar de alguna manera el método de matriz de la API, pero ¿alguien puede ayudarme a comenzar?

Respuesta

30

me alegro que te guste :)

Básicamente, CHCSVParser solamente analiza los archivos CSV. Le da una ruta a un archivo CSV y le devolverá un montón de NSStrings. Lo que hagas más allá de ese punto depende completamente de ti.

Digamos que ha incluido un archivo CSV en su aplicación iOS llamado "Data.csv". Aquí te mostramos cómo utilizar CHCSVParser a analizarlo:

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

En este punto, rows es una matriz. Cada elemento en rows es en sí mismo una matriz que representa una sola fila en el archivo CSV. Y cada elemento de esa matriz es NSString.

Así que digamos que el archivo CSV se ve así:

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

Si lo ejecuta a través del analizador, que pondremos en el equivalente a esto:

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

Lo que se hace con entonces es tu negocio. El analizador CSV no sabe nada sobre UITableView, por lo que puede tomar estos datos y rediseñarlos de una manera que le resulte cómodo y que se ajuste a su modelo de datos.

Además, recuerde que al usar CHCSVParser, acepta respetar the terms under which it is made available. :)

+0

Gracias, Dave, ¡eso ayuda mucho! Entonces, ¿dónde está el mejor lugar para implementar este método, en mi tabla VC 'viewDidLoad' método? Y la API automáticamente sabe que cuando hay un ',' dentro de dos '" "', ¿eso es todo una cadena? – Jon

+0

@Jon Eso fue un error tipográfico que arreglé. Re: ¿el mejor lugar? Dentro de un CV es un lugar decente para ponerlo, supongo. El mejor lugar para ponerlo es algo que depende completamente de tu aplicación. :) –

+0

Gracias Dave. Intenté hacerlo en ViewDidLoad pero la aplicación demora una eternidad en abrirse ahora. ¿Tienes alguna otra sugerencia? Funciona bien en el simulador, pero en mi dispositivo la aplicación tarda 30 segundos en abrirse. Necesito estos datos para cargar el tableView inicial. – Jon

Cuestiones relacionadas