【问题标题】:Creating a csv file and reading it创建一个 csv 文件并读取它
【发布时间】:2013-01-28 04:51:50
【问题描述】:

所以在我的应用程序的第一个视图控制器中,我试图创建一个包含字符串的 csv 文件,但由于某种原因它不起作用。我正在使用此代码:

-(IBAction)initialButton:(id)sender {
    NSLog(@"initialButton clicked");


    if([securityCode.text length] == 8){

        NSString *securtityCodeData = [NSString stringWithFormat:@"%@",
                                       self.securityCode.text];
        NSString *docPath =[NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)objectAtIndex:0];
        NSString *securityCodes=[docPath stringByAppendingPathComponent:@"securityCodes.txt"];

        if (![[NSFileManager defaultManager] fileExistsAtPath:securityCodes]){
            [[NSFileManager defaultManager]createFileAtPath:securityCodes contents:nil attributes:nil];
        }

        NSFileHandle *fileHandel = [NSFileHandle fileHandleForUpdatingAtPath:securityCodes];
        [fileHandel seekToEndOfFile];
        [fileHandel writeData:[securtityCodeData dataUsingEncoding:NSUTF8StringEncoding]];
        [fileHandel closeFile];

        NSLog(@"security code has been saved\nSecurity code:%@",securtityCodeData);


        NewTrackTraceViewController *newTrackTraceViewController = [[NewTrackTraceViewController alloc]init];

        AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
        [appDelegate.transitionController transitionToViewController:newTrackTraceViewController withOptions:UIViewAnimationOptionTransitionCrossDissolve];

        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
        [[NSUserDefaults standardUserDefaults] synchronize];





} else {
    [WCAlertView showAlertWithTitle:@"Security code is not valid"
                            message:@"Please enter a valid securitycode to continue."
                 customizationBlock:^(WCAlertView *alertView) {

                     alertView.style = WCAlertViewStyleVioletHatched;

                 } completionBlock:^(NSUInteger buttonIndex, WCAlertView *alertView) {

                 } cancelButtonTitle:@"Cancel" otherButtonTitles:@"Okay",nil];
}

}

然后我们推送到我的第二个视图控制器,在那里我想读取 csv 文件并将其内容放在标签中:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *docPath =[NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES)objectAtIndex:0];
    NSString *securityCodes=[docPath stringByAppendingPathComponent:@"securityCodes.csv"];

    if([[NSFileManager defaultManager] fileExistsAtPath:securityCodes]){

        securityCodeLabel.text = securityCodes;
        NSFileHandle *fileHandel = [NSFileHandle fileHandleForReadingAtPath:securityCodes];
        NSString *securityCodeData=[[NSString alloc]initWithData:[fileHandel availableData] encoding:NSUTF8StringEncoding];
        [fileHandel closeFile];

        self.securityCodeLabel.text=securityCodeData;
        NSLog(@"%@",securityCodeData);
    }else{
        NSLog(@"File does not exist");
        self.securityCodeLabel.text=@"No security code found!";

    }
}

我做错了什么?由于某种原因,该文件未保存..

【问题讨论】:

  • 你的意思是写到 NSDocumentationDirectory 而不是 NSDocumentDirectory?
  • 太棒了,这是问题,非常感谢:D
  • 旁注:将这个:NSString *securtityCodeData = [NSString stringWithFormat:@"%@", self.securityCode.text]; 更改为这个:NSString *securtityCodeData = self.securityCode.text;。除非您确实有要格式化的字符串,否则不要使用字符串格式。
  • 旁注2:无需文件句柄即可将文件读入NSString。只需使用NSString stringWithContentsOfFile:encoding:error:

标签: iphone ios objective-c csv


【解决方案1】:

NSDocumentationDirectory 应该是 NSDocumentDirectory。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2015-10-01
    • 2023-03-11
    • 2020-02-06
    • 2020-05-17
    • 2020-03-16
    • 2019-12-24
    相关资源
    最近更新 更多