Objective-C (iOS): CSV を読み込む

CSV から一行ごとにデータとして配列で取得するスニペット。

+ (NSMutableArray *)getDataFromCSV:(NSString *)csvFileName
{
    // CSVファイルからセクションデータを取得する
    NSString *csvFile = [[NSBundle mainBundle] pathForResource:csvFileName ofType:@"csv"];
    NSData *csvData = [NSData dataWithContentsOfFile:csvFile];
    NSString *csv = [[NSString alloc] initWithData:csvData encoding:NSUTF8StringEncoding];
    
    NSScanner *scanner = [NSScanner scannerWithString:csv];
    // 改行文字の選定
    NSCharacterSet *chSet = [NSCharacterSet newlineCharacterSet];
    NSString *line;
    
    // レコードを入れる NSMutableArray
    NSMutableArray *row = [NSMutableArray array];
    
    while (![scanner isAtEnd]) {
        // 一行づつ読み込んでいく
        [scanner scanUpToCharactersFromSet:chSet intoString:&line];
        NSArray *array = [line componentsSeparatedByString:@","];
        [row addObject:array];
        
        // 改行文字をスキップ
        [scanner scanCharactersFromSet:chSet intoString:NULL];
    }
    return row;
}