2011-02-11 42 views
6

練習として、ビルトインノートアプリに似たアプリを書こうとしています。
ファイルを保存する方法を理解しておらず、UITableViewに表示しています。
今のところ、ユーザーが入力できるUITextViewがあります。私はボタンも保存しています。
ユーザーが[保存]ボタンをタップすると、保存して後でテーブルビューに表示する必要があります。
私は非常に紛失していますので、関連するチュートリアルなどを知っていれば、非常に感謝しています。iPhoneでのテキストファイルの書き込みと読み込み

+1

あなたはおそらく聞きたくない答えているを持ってできるようにしたい場合は、「しないでくださいテキストファイルを使用する "。シリアル化戦略(plists)に組み込まれているものを見ることができます。 – hanno

+1

@hanno-私はまた、plistよりも優れていることをCore Dataを使用して追加します。それは速く、効率的で、もっと重要なのは、スケーラブルなことです。 –

答えて

23

実際のコメント作成者が指摘したように、コアデータや他のデータ永続化戦略を見たいと思うでしょう。あなたが学習経験としてこれを追求する上で死んでセットしている場合は、このようなものはあなたの問題を解決する必要があります。

- (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)よりも優れていますか? –

+0

こんにちは。この行でエラーとクラッシュが発生しました:[[aString dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:NO]; – kemdo

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

必要なのは、素早く汚れたストリングです。それでは、plistのアプローチに絶対に行きます。しかし、あなたがまったくスケールアップしようとするなら、その使い易さによってもたらされる誘惑に抵抗してみてください。 –

関連する問題