将文本文件保存到iOS 7中的文档目录

23 iphone objective-c ios ios7

我试图将纯文本文件保存到iOS 7中的Documents目录.这是我的代码:

//Saving file
NSFileManager *fileManager = [[NSFileManager alloc] init];
NSArray *urls = [fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];

NSString *url = [NSString stringWithFormat:@"%@", urls[0]];

NSString *someText = @"Random Text To Be Saved";
NSString *destination = [url stringByAppendingPathComponent:@"File.txt"];

NSError *error = nil;

BOOL succeeded = [someText writeToFile:destination atomically:YES encoding:NSUTF8StringEncoding error:&error];

if (succeeded) {
    NSLog(@"Success at: %@",destination);
} else {
    NSLog(@"Failed to store. Error: %@",error);
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

2013-10-13 16:09:13.848 SavingFileTest[13675:a0b] Failed to store. Error: Error Domain=NSCocoaErrorDomain Code=4 "The operation couldn’t be completed. (Cocoa error 4.)" UserInfo=0x1090895f0 {NSFilePath=file:/Users/Username/Library/Application%20Support/iPhone%20Simulator/7.0-64/Applications/F5DA3E33-80F7-439B-A9AF-E8C7FC4E1630/Documents/File.txt, NSUserStringVariant=Folder, NSUnderlyingError=0x10902aeb0 "The operation couldn’t be completed. No such file or directory"}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么我在模拟器上运行此错误.如果我使用NSTemporaryDirectory(),这是有效的.

Mun*_*ndi 53

来自Apple的Xcode模板:

/**
 Returns the URL to the application's Documents directory.
 */
- (NSURL *)applicationDocumentsDirectory {
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory 
         inDomains:NSUserDomainMask] lastObject];
}
Run Code Online (Sandbox Code Playgroud)

你可以像这样保存:

NSString *path = [[self applicationDocumentsDirectory].path 
                       stringByAppendingPathComponent:@"fileName.txt"];
[sampleText writeToFile:path atomically:YES
                       encoding:NSUTF8StringEncoding error:nil];
Run Code Online (Sandbox Code Playgroud)

  • 方便.预期的结果是一个带有一个元素的数组,所以你可以使用`[0]`(如果数组以某种方式为空可能会崩溃),或者`firstObject`或`lastObject`(它不会崩溃但只返回`nil) `). (2认同)