我正在尝试将一个非常基本的文本字符串写入我的文档目录,并从那里开始工作,以便稍后保存其他文件等。
我目前无法将任何内容写入我的文档目录
(在我的viewDidLoad
中)
NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
NSString *documentsDirectory = [pathArray objectAtIndex:0];
NSString *textPath = [documentsDirectory stringByAppendingPathComponent:@"file1.txt"];
NSString *text = @"My cool text message";
[[NSFileManager defaultManager] createFileAtPath:textPath contents:nil attributes:nil];
[text writeToFile:textPath atomically:NO encoding:NSUTF8StringEncoding error:NULL];
NSLog(@"Text file data: %@",[[NSFileManager defaultManager] contentsAtPath:textPath]);
这是打印出来的内容:
如果我尝试这样做,它也会打印出 null:2011-06-27 19:04:43.485 MyApp[5731:707] 文本文件数据:(null)
NSLog(@"My Documents: %@", [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:NULL]);
我在写入文件时错过了什么或者做错了什么?可能需要更改plist中的某些内容或需要一些框架/导入吗?
谢谢
[编辑] 我通过writeToFile传递了一个NSError对象并得到了这个错误:
错误:错误域=NSCocoaErrorDomain Code=512“无法完成操作。(Cocoa错误512。)”UserInfo=0x12aa00 {NSFilePath=/var/mobile/Applications/887F4691-3B75-448F-9384-31EBF4E3B63E/Documents/file1.txt,NSUnderlyingError=0x14f6b0“无法完成操作。不是目录”}
[编辑2] 这在模拟器上很好用,但在我的手机上不行 :/
writeToFile:
时,传入一个 NSError 对象,并在调用后检查错误。 - keno[text writeToFile:textPath atomically:YES encoding:NSUTF8StringEncoding error:NULL];
。这里的区别在于你正在进行原子写入。请查看苹果文档中的[NSString writeToFile:atomically:encoding:error:]
以了解其背后的原因。另外,由于错误是关于目录的,所以请在设备上调试您的应用程序,以查看文件路径的实际情况。 - keno