模拟器中的iOS 8 writeToFile

时间:2014-12-04 12:43:06

标签: ios objective-c

我正在尝试使用以下代码编写一个简单的字符串文件:

    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSString *fileName = [NSString stringWithFormat:@"%@/textfile.txt",
                          documentsDirectory];
    NSString *content = @"Test Content";
    NSError *error = nil;
    [content writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:&error];

    NSLog(@"Error %@ %@", fileName, error);

但该文件未写入且错误为空。

我在iOS模拟器中运行代码,并期望将文件写入以下位置:/ Users / user / Library / Developer / CoreSimulator / Devices / 85DDC17D-A771-40D9-99BE-71FF6B60D2DF / data /容器/数据/应用程序/ BD30A945-25DB-4ECE-B7F7-E9C20C6691C7 / Documents / textfile.txt(来自NSLog的fileName的路径)。

3 个答案:

答案 0 :(得分:0)

正如@rckoenes指出的那样,我的其余代码中出现了错误。我有一个函数删除“文档”中的所有文件,我只是不记得我有这个功能,并且由于代码的长度(> 5000行)很难找到。谢谢大家!

答案 1 :(得分:-1)

使用网址是一种有点可靠的方式,所以我会稍微重新理解你的想法,例如这样:

NSURL *_documentFolder = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *_fileURL = [_documentFolder URLByAppendingPathComponent:@"textFile.txt"];
NSError *_error = nil;
BOOL _success = [@"hello!" writeToURL:_fileURL atomically:TRUE encoding:NSUTF8StringEncoding error:&_error];

在模拟器和真实设备上也能完美运行,文件textFile.txt将包含内容hello!


注意:如果_success值为FALSE,您可以通过_error获取有关原因的更多信息,即使您只是记录它到调试控制台。我没有在我的示例中隔离NSString,但您可以将其替换为您自己的实例。

答案 2 :(得分:-2)

请查看以下代码:

   NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
   NSString *filePath = [[pathsobjectAtIndex:0]stringByAppendingPathComponent:@"textfile.txt"];
   NSString *temp = [[NSString alloc] initWithString:@"Test Content"];
   [temp writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];