6

I'd like to be able to export my Core Data entity to a CSV file, to save application's data. I googled but found nothing.

My app uses only one entity with five attributes. These attributes are all strings except one that is a decimal number (with a comma or a point). How can I export this entity with all the attributes?

matteodv
  • 3,884
  • 4
  • 37
  • 71

1 Answers1

7

You have to create a method to do this kind of operation, like this:

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

I suggest you to try to avoid the "appending" system that I'm using, this kind of operation generate leaks in memory. Instead of a stringWithFormat that rewrite the same var, use this method that has been very well written: Shortcuts in Objective-C to concatenate NSStrings

You can also take a look at this library: https://github.com/davedelong/CHCSVParser I never used it, but it looks very helpful for write/read CVS files.

Community
  • 1
  • 1
bontoJR
  • 6,785
  • 1
  • 24
  • 39
  • Thanks for your answer! I'll try this method and I'll see the linked parser ;) One question: must I declare "arrayOfObject"? I rarely use for construct and I've got some answers about it :) – matteodv Dec 14 '10 at 15:57
  • yes, the arrayOfObject is the array of objects that you request from Core Data. – bontoJR Dec 14 '10 at 16:01
  • How can I get an array from Core Data? I'm using attributes without an array but with this code... For example my entity's name is Entity then I use Entity.attribute... I really don't understand how... :( Can you help me to clarify my ideas? Thanks! – matteodv Dec 14 '10 at 16:13
  • ok, that's correct to export a single entity to a single line of the CVS file that you want to generate. But before do that, you should export all entities that you've stored in you Core Data DB. – bontoJR Dec 14 '10 at 16:20
  • You're on the right track with the CHCSVParser class. I've used it and it is awesome. – Neal L Dec 18 '10 at 02:39