2010-12-14 92 views
5

J'aimerais pouvoir exporter mon entité Core Data dans un fichier CSV pour enregistrer les données de l'application. J'ai googlé mais je n'ai rien trouvé.Comment exporter l'entité Core Data dans un fichier CSV

Mon application utilise une seule entité avec cinq attributs. Ces attributs sont toutes les chaînes sauf une qui est un nombre décimal (avec une virgule ou un point). Comment puis-je exporter cette entité avec tous les attributs?

+0

Y a-t-il quelqu'un avec d'autres solutions? – matteodv

Répondre

7

Vous devez créer une méthode pour faire ce genre d'opération, comme ceci:

NSString *separator = @", "; 
NSString *cvs = @""; 
for (NSObject *object in arrayOfObject) { 
     cvs = [NSString stringWithFormat:@"%@%@%@%@%@\n", cvs, [object att1], separator, [object att2], separator, [object att3]...]; 
} 
//If you want to store in a file the CVS 
[cvs writeToFile:pathToFile atomically:YES]; 

Je vous suggère d'essayer d'éviter le système « appending » que j'utilise, ce genre d'opération génèrent fuit en mémoire. Au lieu d'un stringWithFormat qui récrire le même var, utilisez cette méthode qui a été très bien écrit: Shortcuts in Objective-C to concatenate NSStrings

Vous pouvez également jeter un oeil à cette bibliothèque: https://github.com/davedelong/CHCSVParser Je ne ai jamais utilisé, mais il semble très utile pour écrire/lire des fichiers CVS.

+0

Merci pour votre réponse! Je vais essayer cette méthode et je verrai l'analyseur lié;) Une question: dois-je déclarer "arrayOfObject"? J'utilise rarement pour construire et j'ai quelques réponses à ce sujet :) – matteodv

+0

oui, le arrayOfObject est le tableau d'objets que vous demandez à partir des données de base. – bontoJR

+0

Comment puis-je obtenir un tableau à partir des données de base? J'utilise des attributs sans tableau mais avec ce code ... Par exemple le nom de mon entité est Entity puis j'utilise Entity.attribute ... Je ne comprends vraiment pas comment ... :(Pouvez-vous m'aider à clarifier mon – matteodv