阅读csv文件ios

时间:2014-01-23 12:18:46

标签: ios objective-c csv

我有一个读取csv文件的问题。仅显示最后一行csv文件。 但是在我的fetchedResultsController中我有2行 这是代码:

NSString * writeString;
NSInteger i = 0;
for (id object in [[self fetchedResultsController] fetchedObjects]) {
    NSString * object1 = [[object valueForKey:@"object1"] description];
    NSString * object2 = [[object valueForKey:@"object2"] description];
    NSString * object3 = [[object valueForKey:@"object3"] description];
    NSString * object4 = [[object valueForKey:@"object4"] description];
    writeString = [NSString stringWithFormat:@"%@, %@, %@, %@, \n", object1, object2, object3, object4];
    i++;
    NSLog(@"%@ - %i", writeString, i);

}


NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* savePath = [paths objectAtIndex:0];
savePath = [savePath stringByAppendingPathComponent:@"myfile.csv"];
[writeString writeToFile:savePath atomically:YES encoding:NSUTF8StringEncoding error:NULL];
NSLog(@"%@", savePath);

NSString *fullPath = savePath;

[self readTitleFromCSV:fullPath  AtColumn:0];

和readTitleFromCSV方法:

-(void)readTitleFromCSV:(NSString*)path AtColumn:(int)column
{

NSMutableArray *titleArray=[[NSMutableArray alloc]init];

NSString *fileDataString=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSArray *linesArray=[fileDataString componentsSeparatedByString:@"\n"];


int k=0;
for (id string in linesArray)
    if(k<[linesArray count]-1){

        NSString *lineString=[linesArray objectAtIndex:k];
        NSArray *columnArray=[lineString componentsSeparatedByString:@","];
        [titleArray addObject:[columnArray objectAtIndex:column]];
        k++;

    }

NSLog(@"%@",titleArray);

}

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

尝试使用NSMutableString而不是NSString:

NSMutableString *writeString = [NSMutableString string];

然后在for循环中:

[writeString appendString:[NSString stringWithFormat:@"%@, %@, %@, %@, \n", object1, object2, object3, object4]];