I’m trying to load a default set of data from a csv file into my core data db. So initially i’m trying to read in a csv file and output it to the log before trying to add it to the core data database.
This is the code i’m using;
//Find import file;
NSString *defaultCSVPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"csv"];
//Get the data into a string
NSString *fileString = [NSString stringWithContentsOfFile:defaultCSVPath encoding:NSUTF8StringEncoding error:nil];
if ( nil == fileString ) {
NSLog(@"Could not open file data.csv");
abort();
}
// Create the scanner
NSScanner *scanner = [NSScanner scannerWithString:fileString];
// Ignore new lines
[scanner setCharactersToBeSkipped:
[NSCharacterSet characterSetWithCharactersInString:@"\n"]];
NSString *sNumber = @"";
NSString *sTitle = @"";
//Gets to here and this expression is never TRUE
while ( [scanner scanString:@"," intoString:&sNumber] && [scanner scanString:@"," intoString:&sTitle]) {
NSLog(@"sNumber:%@ sTitle:%@",sNumber,sTitle);
}
The sample data i’m using is;
A15Q,Test1
F74443AAZ,Test2
When I trace the code, I get to the while clause and it just skips over it.
Not sure why you initialize sNumber and sTitle to @””; nil is a better default (or you can just not initialize them).
[scanner scanString:@"," intoString:&foo]expects to see a comma and returns the comma infoo(it does this for consistency and (I think) Unicode wotsits).You probably want to do something more like this:
(And I need to stick something here for the formatting to work, for some reason.)
Assuming you’re trying to parse CSV, this has its own problems:
"a,b","c,d,e,f").