2016-11-21 85 views
1

我目前正在研究需要解析單詞詞典的iOS應用程序。在txt文件中讀入iOS應用程序時出錯

當我嘗試導入文件並將內容轉換爲字符串時,在let path:String = Bundle.main.path(forResource: "words", ofType: "txt")!行上出現錯誤。錯誤是線程1:「EXC_BREAKPOINT(code = 1,subcode = 0x1002e11ec)」

任何幫助將不勝感激。

注:資產的截屏附

let path:String = Bundle.main.path(forResource: "words", ofType: "txt")! 
text = try! String(contentsOfFile: path, encoding: String.Encoding.utf8)  
words = text.components(separatedBy: ("\n")) 

enter image description here

回答

2

Bundle path(forResource:ofType:)返回可選String。你正在強制解開這些選項。當返回值爲nil時,這會崩潰。

當應用程序的資源包中實際上沒有這樣的文件時,它會返回nil

  1. 您需要在應用程序捆綁包中實際上有一個名爲words.txt的文件。確保文件名大小寫匹配,並確保爲您的目標選擇了文件。
  2. 通常你不應該強制解開可選項。它導致崩潰。然而,有人可能會爭辯說,您發佈的代碼中的兩個解壓縮包將永遠不會崩潰,一旦您的應用程序正常工作。第一個只是崩潰,因爲你還沒有正確地把文件放在你的資源包中。並且第二個(try!)將不會崩潰,因爲您知道它將是給定編碼中的有效文本文件。
+0

我喜歡告訴人們新的Swift:「除非你真的瞭解Swift中的可選項,否則你應該假裝'!'force-unwrap操作符不存在。 –

+0

@rmaddy感謝您的建議,但它看起來像文件是否有任何其他建議? –

+1

我從來沒有在Xcode中使用過數據集,所以我不知道你應該如何訪問這樣的文件。使用'Bundle'是爲你放置的文件我不確定爲什麼你的文本文件在數據集中。 – rmaddy

0

請勿使用數據集。只需將你的txt文件拖入文件導航器。

enter image description here

爲了進一步解釋,你看到的錯誤是,你使用!其中說您要保證該資源中存在該資源的路徑。它沒有。