【问题标题】:obj-c writing string to file not workingobj-c 将字符串写入文件不起作用
【发布时间】:2012-11-06 09:52:56
【问题描述】:

我有以下尝试将字符串写入桌面上的文件,但出现错误。

我写的代码是:

id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];

// Get array with first index being path to desktop
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES);

// Get the first element
NSString *desktopPath = [paths objectAtIndex:0];

// Append words.txt to path
NSString *theFilePath = [desktopPath stringByAppendingPathComponent:@"glutenFreeJson.txt"];

NSError *error = nil;
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"%@\n\n", jsonString);
NSLog(@"%@\n\n", theFilePath);
[jsonString writeToFile:theFilePath atomically:YES encoding:NSStringEncodingConversionAllowLossy error:&error];
NSLog(@"Write returned error: %@", [error localizedDescription]);

这会打印“Write returned error: The operation couldn’t be completed. (Cocoa error 4.)

我不知道为什么。

更新:应用程序最初从服务器请求 json 数据,对其进行解析并显示。但是,服务器一直不稳定,并不总是及时响应,我只需要一次数据,所以我只想将它下载到我电脑上的桌面文件夹并将其移动到我的项目文件夹中。

【问题讨论】:

  • 你理解的 iOs Desktop 路径是什么(当你使用NSDesktopDirectory)?

标签: ios nsstring writetofile


【解决方案1】:

使用这个,

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

【讨论】:

  • 我编辑了我的帖子,目的是写到我的电脑桌面上。
【解决方案2】:

iOS没有DesktopDirectory,把NSDesktopDirectory改成NSDocumentDirectory。它会起作用的。

或简单写

NSString *desktopPath = NSHomeDirectory();

【讨论】:

  • 这不完全正确,您可以在/var/mobile/NSDesktopDirectory 获得一些 路径,即NSHomeDirectory() + /Desktop,两者都不可写。
  • @A-Live: NSDocumentDirectory 返回/Users/Midhun/Library/Application Support/iPhone Simulator/6.0/Applications/24E2D0D1-D918-4949-AF07-B6293D115FE9/Library/Documentation NSHomeDirectory() 返回/Users/Midhun/Library/Application Support/iPhone Simulator/6.0/Applications/24E2D0D1-D918-4949-AF07-B6293D115FE9
  • @A-Live:我没明白你说的NSHomeDirectory() + /Desktop是什么意思?
  • '+' 我的意思是串联。正如我所说,禁止向根 NSHomeDirectory() 写入任何内容。 NSDocumentDirectory 不在您的原始答案中,我很高兴您添加了它,但答案仍然不正确,因为它建议写入 NSHomeDirectory()。
猜你喜欢
  • 2016-10-27
  • 2018-11-18
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多