2011-02-11 26 views
6

作爲一種習慣,我正在嘗試編寫類似於內置便箋應用程序的應用程序。
但我不知道如何保存文件並將其顯示在UITableView
現在,我有一個UITextView,用戶可以輸入。我也有一個保存按鈕。
當用戶點擊保存按鈕時,我想保存它,並稍後將其顯示在表格視圖中。
我很失落,所以如果你知道任何相關的教程等,將不勝感激。在iPhone上書寫和閱讀文本文件

+1

,你可能不希望聽到的答案爲「不要使用文本文件「。你可以看看一些內置的序列化策略(plist)。 – hanno 2011-02-11 00:18:38

+1

@hanno - 我還會補充說,比plists更好,使用Core Data。它快速,高效,更重要的是,*可擴展*。 – 2011-02-11 00:24:01

回答

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]; 
} 
+0

它比使用[NSString writeToFile](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html)更好嗎? – 2013-02-14 16:00:16

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"];