Créer un Tableau à Partir d'un Fichier CSV à l'Aide Objective C
Je suis nouveau sur le codage, donc veuillez m'excuser si cela semble être une question simple.
Je suis en train de tracer les coordonnées sur une carte.
Je veux lire un fichier CSV et transmettre l'information à deux tableaux distincts.
Le premier tableau sera NSArray *towerInfo (contenant la latitude, la longitude et la tour titre)
la deuxième, NSArray *région (contenant de la tour du titre et de la région) avec le même chef d'accusation, l'indice de la première matrice.
Essentiellement, je crois que j'ai besoin d';
1) lire le fichier dans une chaîne.....
2) diviser la chaîne en un tableau temporaire de séparation à tous les /n/r......
3) de la boucle à travers le temp de tableau et de créer une tour et la région de l'objet à chaque fois avant d'ajouter cette information pour les deux principales matrices de stockage.
Est-ce le bon processus et, si oui, est qu'il ya quelqu'un qui peut poster un exemple de code que j'ai vraiment du mal à obtenir ce droit.
Merci à tous par avance.
Chris.
J'ai édité ce pour montrer un exemple de mon code. Je vais avoir le problème que je reçois des mises en garde en disant
1) "le local la déclaration de "dataStr" se cache variable d'instance.
2) "le local la déclaration de "tableau" se cache variable d'instance.
Je crois que je comprends ce que cela signifie, mais je ne sais pas comment la contourner. Le programme compile et s'exécute, mais le log me dit que la "matrice est nulle."
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize dataStr;
@synthesize array;
-(IBAction)convert {
//calls the following program when the onscreen 'convert' button is pressed.
NSString *dataStr = [NSString stringWithContentsOfFile:@"Towers.csv" encoding:NSUTF8StringEncoding error:nil];
//specifies the csv file to read - stored in project root directory - and encodes specifies that the format of the file is NSUTF8. Choses not to return an error message if the reading fails
NSArray *array = [dataStr componentsSeparatedByString: @","];
//splits the string into an array by identifying data separators.
NSLog(@"array: %@", array);
//prints the array to screen
}
L'aide supplémentaire serait très apprécié. Merci pour les réponses à ce jour.
Pouvez-vous donner quelques exemple de lignes du fichier CSV et d'expliquer où l'info est?
OriginalL'auteur user1341967 | 2012-04-18
Vous devez vous connecter pour publier un commentaire.
Vous aurez probablement envie de jeter quelques "stringTrimmingCharactersInSet" les appels à la garniture des espaces.
OriginalL'auteur Hot Licks
Concernant vos avertissements:
Votre code devrait produire une erreur (pas un message d'avertissement), puisque vous devez déclarer vos propriétés dans le fichier d'interface avant de les synthétiser dans la mise en œuvre. Vous vous souvenez sans doute que
@synthesize
génère des méthodes d'accès de vos propriétés. Aussi, avant d'utiliser le@synthesize
directive, vous devez utiliser le@property
directive, également dans l'interface.Voici un exemple:
Noter que la déclaration de la propriété est suivie par un type (attribuer dans ce cas, qui est la valeur par défaut). Il y a une excellente explication à ce sujet dans Stephen G. Kochans du livre: La programmation en Objective-C 2.0
Mais en supposant que pour la commodité du raisonnement, que vous avez omis la bonne
@interface
fichier ici.Si vous déclarez une propriété dans le
@interface
, et de déclarer ensuite une autre propriété dans votre méthode, en utilisant le même nom de variable, la méthode de la variable aura la priorité sur la variable d'instance.Dans votre code, il suffit d'omettre de déclarer le nom de la variable, comme ceci:
OriginalL'auteur Fnord23
Je suis en supposant que le cœur de votre question est "comment analyser un fichier CSV", pas "quoi faire avec les données une fois qu'il est analysée". Si c'est le cas, vérifier les CHCSVParser de la bibliothèque. Je l'ai utilisé dans des projets d'avant et de le trouver pour être très fiable. Il peut analyser n'importe quelle chaîne de caractères ou le chemin du fichier dans un NSArray de lignes/colonnes pour vous. Après cela, tout ce que vous faites avec les données est à vous.
OriginalL'auteur Matt J