Swift 2.0 - 无法写入文本文件(OS X)
问题描述:
我有一个文本文件,我将读取和写入。我已经获得了成功读取的代码,但无法再次写入文本文件。我想覆盖一切(不修改)。Swift 2.0 - 无法写入文本文件(OS X)
if let dir : NSString = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.AllDomainsMask, true).first {
let path = dir.stringByAppendingPathComponent("airports.txt")
var strTextToWrite:String = String()
strTextToWrite = "Test"
do {
try strTextToWrite.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding)
}
catch { print("Error") }
}
上面的代码不会抛出一个错误(即所说的“错误”不打印按我的捕捉代码),但文本文件仍然原封不动地保留了它的代码是前值跑。
该文本文件包含了X-代码项目中,如下图所示:
我在一个真正的损失就在这里,我不明白为什么代码不能正常工作。我已确认它正在运行(通过在do
声明之前和之后打印strTextToWrite
的值,并且它肯定贯穿do
代码块,因为它没有被catch
块捕获。我唯一可以想不到的是,该代码是在错误的文件指向(但文件名是正确的,因为你可以用上面的截图确认)。
什么我做错了什么?在此先感谢。
答
你是查看2个不同的文件:您写入的文件是~/Documents/airport.txt
,而在Xcode中看到(和检查)的文件位于项目文件夹中。要查看更新,您需要参考 Xcode中的文件,不能复制它。
- 在Project Navigator中右键点击
airport.txt
并单击删除>移动到回收站 - 转到
~/Documents/airport.csv
并将其拖动到你的Xcode项目。不要把它添加到任何目标和“如果有必要复制项目”
取消选择现在您已经创建链接到该文件。
组合中的修改文件一般是一个坏主意。如果您需要输出临时文件的地方,请使用~/Application Support
下的应用程序子文件夹或系统的临时文件夹。
你确定你没有看2个不同的文件吗?右键单击Xcode中的“airport.txt”,然后选择* Show in Finder *查看它在哪里。您的代码写入的文件位于'〜/ Documents/airport.txt' –
显示读取文件的代码。 – MwcsMac
谢谢@CodeDifferent,我从网站上复制了这段代码,显然它假设文件将在计算机的文件夹系统中。你能够发布一个答案,展示如何在应用程序本身的主包中引用该文件?我以前使用过代码,但无法使引用正常工作。 –