いくつかのことができると思います:
NSFileHandle *fileHandle = [NSFileHandle fileHandleForWritingAtPath:aPath];
[fileHandle seekToEndOfFile];
[fileHandle writeData:[textToWrite dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];
これにより、ファイルに NSData が追加されることに注意してください。NSString ではありません。NSFileHandle を使用する場合は、事前にファイルが存在することを確認する必要があることに注意してください。fileHandleForWritingAtPath
パスにファイルが存在しない場合は nil を返します。NSFileHandle クラス リファレンスを参照してください。
または、次のようにすることもできます。
NSString *contents = [NSString stringWithContentsOfFile:filepath];
contents = [contents stringByAppendingString:textToWrite];
[contents writeToFile:filepath atomically:YES encoding: NSUnicodeStringEncoding error:&err];
2 番目のアプローチでは、新しいコンテンツをファイルに書き込む前に、ファイルのコンテンツを NSString に読み込む必要があるため、最初のアプローチが最も効率的だと思います。ただし、ファイルに NSData を含めずにテキストのままにしたい場合は、2 番目のオプションの方が適しています。
[更新]
stringWithContentsOfFile は非推奨であるため、2 番目のアプローチを変更できます。
NSError* error = nil;
NSString* contents = [NSString stringWithContentsOfFile:filepath
encoding:NSUTF8StringEncoding
error:&error];
if(error) { // If error object was instantiated, handle it.
NSLog(@"ERROR while loading from file: %@", error);
// …
}
[contents writeToFile:filepath atomically:YES
encoding:NSUnicodeStringEncoding
error:&err];
スタックオーバーフローに関する質問を参照してください