当保存一大堆长文本的时候,用文件持久化的方式也许会更好一点。比如系统升级说明,系统公告之类的。
首先是获取文件的路径:
- (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的委托。