在iPhone上书写和阅读文本文件

时间:2011-02-11 00:15:01

标签: iphone xcode file-io

作为一种做法,我正在尝试编写类似于内置笔记应用程序的应用程序 但我无法弄清楚如何保存文件并将其显示在UITableView
现在,我有一个UITextView用户可以输入。我还有一个保存按钮。
当用户点击保存按钮时,我想保存它,然后将其显示在表格视图中 我非常迷失,所以如果您知道任何相关的教程等,我们将不胜感激。

2 个答案:

答案 0 :(得分:23)

正如现实世界中的评论者所指出的,您肯定会想要查看Core Data或其他一些数据持久性策略。如果你已经开始追求这个作为学习经验,那么这样的事情可以解决你的问题:

- (void)writeStringToFile:(NSString*)aString {

    // Build the path, and create if needed.
    NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString* fileName = @"myTextFile.txt";
    NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];

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

    // The main act...
    [[aString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:NO];
}

- (NSString*)readStringFromFile {

   // Build the path...
   NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
   NSString* fileName = @"myTextFile.txt";
   NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName];

   // The main act...
   return [[[NSString alloc] initWithData:[NSData dataWithContentsOfFile:fileAtPath] encoding:NSUTF8StringEncoding] autorelease];
}

答案 1 :(得分:1)

保存文本的最简单方法是使用NSUserDefaults。

[[NSUserDefaults standardUserDefaults] setObject:theText forKey:@"SavedTextKey"];

或者,如果您希望每个“文件”都有用户名,或者能够拥有多个文件

NSMutableDictionary *saveTextDict = [[[[NSUserDefaults standardUserDefaults] objectForKey:@"SavedTextKey"] mutableCopy] autorelease];
if (saveTextDict == nil) {
    saveTextDict = [NSMutableDictionary dictionary];
}

[saveTextDict setObject:theText forKey:fileName];
[[NSUserDefaults standardUserDefaults] setObject:saveTextDict forKey:@SavedTextKey"];