iOS从文件读取

我试图让我的iPhone应用程序从一个文件中加载文本到一个string数组,从每个数组元素的文件1行。

我已经使用崇高文本创build了一个文本文件的input文件。 我将文件(位于我的项目目录内的一个文件夹内)拖到xCode中,放到项目heirarchy中同一位置的文件夹中。

我也尝试添加它作为一个捆绑(通过复制文件夹并重命名与.bundle扩展名),无济于事。 目前,我的应用程序有两个地方的文件(显然我打算删除不需要的版本,但我不知道这将如何工作,所以我现在已经离开了它)。

我写了一个函数,我想读取我的文件,并将其内容组装到一个数组中:

func readFromFile(filename: String) -> [String]? { guard let theFile = Bundle.main.path( forResource: fileName, ofType: "txt") else { return nil // ALWAYS returns nil here: Seems 'filename' can't be found????? } do { // Extract the file contents, and return them as a split string array let fileContents = try String(contentsOfFile: theFile) return fileContents.components(separatedBy: "\n") } catch _ as NSError { return nil } } 

就目前而言,函数总是在代码中注释的位置返回nil。

我一直在这个工作~6小时(并尝试了所有的build议,我可以findStackOverflow,谷歌等),我只是越来越多的Swift和错综复杂的各种版本的iOS开发之间的差异。 我似乎无法在任何地方find一致的答案。 我已经检查过苹果文档,但是它太高级了,没有示例代码让我在我的初学者水平上理解。

我也尝试用“.txt”扩展名命名文件,但是这也没有帮助。

如果要将其引用为forResource: "alert01", ofType: "txt"则必须将该文件命名为alert01.txt

从捆绑中加载将不起作用。 该文件需要成为您的项目的一部分,如第一项所示。

但是,你的代码不会工作,因为你已经创build了一个文件夹引用。 这意味着文件夹PanicAlertFiles正在被复制到它的所有内容中。 您的代码将需要深入该文件夹以检索您的文件。 使用path(forResource:ofType:inDirectory:)来做到这一点,或者(如果你不想明确地编码文件名)获取文件夹,然后使用FileManager来检查其内容。