2016-02-29 70 views
1

我有一个文本文件,我将读取和写入。我已经获得了成功读取的代码,但无法再次写入文本文件。我想覆盖一切(不修改)。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-代码项目中,如下图所示:

Text File Location

我在一个真正的损失就在这里,我不明白为什么代码不能正常工作。我已确认它正在运行(通过在do声明之前和之后打印strTextToWrite的值,并且它肯定贯穿do代码块,因为它没有被catch块捕获。我唯一可以想不到的是,该代码是在错误的文件指向(但文件名是正确的,因为你可以用上面的截图确认)。

什么我做错了什么?在此先感谢。

+1

你确定你没有看2个不同的文件吗?右键单击Xco​​de中的“airport.txt”,然后选择* Show in Finder *查看它在哪里。您的代码写入的文件位于'〜/ Documents/airport.txt' –

+0

显示读取文件的代码。 – MwcsMac

+0

谢谢@CodeDifferent,我从网站上复制了这段代码,显然它假设文件将在计算机的文件夹系统中。你能够发布一个答案,展示如何在应用程序本身的主包中引用该文件?我以前使用过代码,但无法使引用正常工作。 –

回答

1

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

  1. 在Project Navigator中右键点击airport.txt并单击删除>移动到回收站
  2. 转到~/Documents/airport.csv并将其拖动到你的Xcode项目。不要把它添加到任何目标和“如果有必要复制项目”

取消选择现在您已经创建链接到该文件。

enter image description here

组合中的修改文件一般是一个坏主意。如果您需要输出临时文件的地方,请使用~/Application Support下的应用程序子文件夹或系统的临时文件夹。