Swift 2.0 - 无法写入文本文件(OS X)

时间:2016-02-29 02:43:23

标签: swift nsstring writetofile

我有一个我将阅读和写作的文本文件。我已经成功读取了代码,但无法再次写入文本文件。我想覆盖一切(不修改)。

    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") }

    }

上面的代码没有抛出错误(即根据我的catch代码不打印“错误”一词),但是文本文件仍未编辑,保留了代码运行之前的值。

文本文件包含在X-Code项目中,如下所示:

Text File Location

我真的在这里失去了,我不明白为什么代码不起作用。我已经确认它正在运行(通过在strTextToWrite语句之前和之后打印do的值,它肯定会运行do代码块,因为它不是被catch块捕获。我唯一能想到的是代码指向错误的文件(但文件名是正确的,你可以通过上面的截图验证)。

我做错了什么?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您正在查看2个不同的文件:您写入的文件是~/Documents/airport.txt,而您在Xcode中看到(并检查)的文件位于项目文件夹中。要查看更新,您需要在Xcode中引用文件,而不是复制它。

  1. 右键单击Project Navigator中的airport.txt,然后单击删除>移至垃圾箱
  2. 转到~/Documents/airport.csv并将其拖到Xcode项目中。不要将其添加到任何目标并取消选择"必要时复制项目"
  3. 您现在已经为文件创建了链接

    enter image description here

    修改捆绑包中的文件通常是个坏主意。如果您需要输出临时文件的位置,请使用~/Application Support下的应用程序子文件夹或系统的临时文件夹。