2016-02-29 67 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下的應用程序子文件夾或系統的臨時文件夾。