ios数据本地持久化 之 使用文件持久化

当保存一大堆长文本的时候,用文件持久化的方式也许会更好一点。比如系统升级说明,系统公告之类的。

首先是获取文件的路径:

- (NSString *)currentContentFilePath
{
    NSArray *documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [documentDirectories objectAtIndex:0];
    
    return [documentsDirectory stringByAppendingPathComponent:self.tfdFilename.text];//tfdFilename是一个插座变量txtfield用来输入文件名
}

把大段文本保存进文件:

- (void)saveContentToFile:(NSString *)filePath
{
    NSString *content = self.tvwContent.text;//tvwContent是一个textView 
    NSError *error;
    BOOL success = [content writeToFile:filePath atomically:YES encoding:NSUnicodeStringEncoding error:&error]; //filePath是上面取到的
    if (!success) {
        NSLog(@"Unable to save file: %@\nError:%@",filePath,error);
    }
}

从文件中读出来:

- (IBAction)loadContent:(id)sender
{
    NSString *filePath = [self currentContentFilePath];
    NSError *error;
    NSString *content = [NSString stringWithContentsOfFile:filePath encoding:NSUnicodeStringEncoding error:&error];
    if (error) {
        NSLog(@"Unable to load file : %@ Error:%@",filePath,error);
    }
    self.tvwContent.text = content;
}


基本就可以了。

实际使用的时候,还需要判断文件是否存在,判断内容是否要替换等。如下:

    if ([fileManager fileExistsAtPath:filePath]) {
        UIAlertView *overwriteAlert = [[UIAlertView alloc] initWithTitle:@"File Exists" message:@"Do you want to replace?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
        [overwriteAlert show];
    }

最后实现UIAlertVIew的委托。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值