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

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

    }

上面的代码没有抛出错误(即,根据我的捕获代码,“错误”一词没有被打印出来),但文本文件保持未经编辑,保留代码运行前的值。

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

Text File Location

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

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

最佳答案

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

  1. 在项目导航器中右键单击 airport.txt,然后单击删除 > 移至废纸篓
  2. 转到 ~/Documents/airport.csv 并将其拖到您的 Xcode 项目中。不要将其添加到任何目标并取消选择“必要时复制项目”

您现在已经创建了指向该文件的链接

enter image description here

修改包中的文件通常不是一个好主意。如果您需要一个地方来输出临时文件,请使用 ~/Application Support 下的应用子文件夹或系统的临时文件夹。

关于Swift 2.0 - 无法写入文本文件 (OS X),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691120/

相关文章:

arrays - 如何从 swift 5 中的正则表达式结果中删除括号?

ios - 学习 Swift 并尝试在标签中创建字符串循环

iPhone XML请求

NSdata writeToURL 不起作用

R 写入 stdout 非常慢。有什么改善方法吗?

macos - MAC OS X NSMutableDictionary writeToFile 失败

ios - 事件工具包权限

ios - UIScrollView zoom with Autolayout

cocoa-touch - 如何在 NSString 中添加不间断空格?

ios - strlen() 给出错误的结果