我有一个“写入”按钮,它接受 Textfild 中的任何内容,并附加到指定文件。我还有一个“读取”按钮,可以读取指定文件的内容,并将其显示在屏幕上。“Write”按钮调用 writeDataToFile:(id)sender,“Read”按钮调用 readDataFromFile:(id)sender。
问题是下面的简单代码在 iPhone 6.1 Simulator (Xcode 4.6.2) 上运行良好,但在读取设备(例如 iOS 6.1.3 的 iPod)中不显示任何内容。
我怀疑问题与编码有关:NSUTF8StringEncoding。但是,我尝试了 NSUTF16StringEncoding 和 NSUTF32StringEncoding,它仍然无法在真实设备上运行(但在模拟器上显示乱码)。
我哪里做错了?如果有人能给我一些指示,我将不胜感激。
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [documentPaths objectAtIndex:0];
_fileName = [documentsDirectory stringByAppendingPathComponent:@"data.txt"];
}
- (IBAction)writeDataToFile:(id)sender {
NSString *str = tfData.text;
str = [str stringByAppendingFormat:@"\n"];
_fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:_fileName];
[_fileHandle seekToEndOfFile];
//convert NSString to NSData
[_fileHandle writeData: [str dataUsingEncoding:NSUTF8StringEncoding]];
[_fileHandle closeFile];
[tfData resignFirstResponder];
}
- (IBAction)readDataFromFile:(id)sender {
[tfData resignFirstResponder];
//lbOut is a UILabel
lbOut.text = [NSString stringWithContentsOfFile:_fileName encoding:NSUTF8StringEncoding error:NULL];
}