在iOS设备上读取csv文件时出错

时间:2014-07-03 04:51:14

标签: ios objective-c csv

我创建了一个应用程序以保存为csv文件,app在iOS模拟器中可以正常工作,同时具有写入和读取功能。当我将应用程序加载到iOS设备时,它不会生成数据。

- (IBAction)saveInfo:(id)sender {
    NSString *resultLine = [NSString stringWithFormat:@"%@,%@,%@\n",
                            self.food.text,
                            self.movies.text,
                            self.channel.text];
    NSArray *path= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docPath = [path objectAtIndex:0];
    //resultView.text = docPath;

    NSString *filename = [docPath stringByAppendingString:@"result.csv"];
    resultView.text = filename;

    if (![[NSFileManager defaultManager] fileExistsAtPath:filename])
    {
        [[NSFileManager defaultManager] createFileAtPath:filename contents:nil attributes:nil];
    }
    NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:filename];
    [fileHandle seekToEndOfFile];
    [fileHandle writeData:[resultLine dataUsingEncoding:NSUTF8StringEncoding]];
    [fileHandle closeFile];
    self.food.text = nil;
    self.movies.text = nil;
    self.channel.text =nil;
    NSLog(@"Info saved");


}


- (IBAction)viewInfo:(id)sender {
    NSArray *path= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docPath = [path objectAtIndex:0];
    NSString *filename = [docPath stringByAppendingString:@"result.csv"];

    NSString *fileContent=[NSString stringWithContentsOfFile:filename encoding:NSUTF8StringEncoding error:nil];

    resultView.text = fileContent;

}

2 个答案:

答案 0 :(得分:2)

On Button动作你可以写下面的代码也许文件将在我的视角中显示它正确运行你应该托盘.....

NSFileManager *filemgr;
NSString *dataFile;
NSString *docsDir;
NSArray *dirPaths;

filemgr = [NSFileManager defaultManager];

dirPaths = NSSearchPathForDirectoriesInDomains(
                                               NSDocumentDirectory, NSUserDomainMask, YES);

docsDir = [dirPaths objectAtIndex:0];
dataFile = [docsDir
            stringByAppendingPathComponent: @"datafile.csv"];
NSLog(@"%@",dataFile);
NSData *data = [filemgr contentsAtPath:dataFile];
NSString *fooString=@"----------------\n Full File Data \n ---------------- \n " ;
fooString = [fooString stringByAppendingString:[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] ];
self.FileTextView.text=fooString;

答案 1 :(得分:1)

您正在错误地构建路径。使用:

NSArray *path= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [path objectAtIndex:0];
NSString *filename = [docPath stringByAppendinPathComponent:@"result.csv"];

您获得的代码会产生类似<path to app bundle>/Documentsresult.csv的路径,并且您无法在设备上写入应用包。