【问题标题】:Can't save file to disk, no clue why无法将文件保存到磁盘,不知道为什么
【发布时间】:2012-08-27 17:18:28
【问题描述】:

我正在尝试将字符串写入磁盘:

return [fileContent writeToFile:path atomically:YES encoding:NSUnicodeStringEncoding error:error];

但它总是失败并出现以下错误:

Error Domain=NSCocoaErrorDomain Code=4 "The folder “ddd.csv” doesn’t exist." UserInfo=0xc4a08b0 {NSUnderlyingError=0xc49ba60 "The operation couldn’t be completed. No such file or directory", NSFilePath=file://<path to file>, NSUserStringVariant=Folder}

该文件的路径似乎是有效的(我在这里遮盖了它)并且字符串 (NSMutableString) 的长度绝对不是 0。此代码曾经在 Mountain Lion 之前工作。任何人都可以帮助阐明可能发生的事情吗?

编辑: path的值为:file://localhost/Users/cocoaster/Downloads/ddd.csv

【问题讨论】:

  • 有助于了解path 的值是什么。而且很可能您的应用已被沙盒化,因此访问除此之外的任何内容都会给您带来错误。
  • 是的,99% 确定您根本没有提供正确的目录。文件需要进入应用程序私有目录的子目录之一
  • 我已经添加了路径的值。我在 Xcode 下运行它,但我不记得在沙盒方面进行了任何设置。
  • 这是一个 URL 或 URL 字符串,而不是典型的文件路径。试试 /Users/cocoaster/Downloads/ddd.csv
  • 这应该是最终用户选择的路径。如何让我的用户保存到磁盘?

标签: objective-c cocoa osx-mountain-lion nsmutablestring


【解决方案1】:

由于您使用的是保存面板,因此结果会以 URL 的形式返回,因此如果您需要路径,请使用 path 命令将结果转换为路径:[url path]。

或者,您可以使用 writeToURL:atomically: 如果该版本可用于任何类 fileContent。

【讨论】:

  • 在现代代码中建议使用 URL 而非路径,并且 NSStrings 会响应 writeToURL:atomically:encoding:error:
猜你喜欢
  • 2011-09-22
  • 1970-01-01
  • 2016-07-22
  • 2013-12-19
  • 2010-09-23
  • 2010-11-08
  • 2021-04-13
  • 2021-11-03
  • 2019-10-30
相关资源
最近更新 更多