无法访问加载到项目中的文件

时间:2015-03-11 15:23:31

标签: xcode swift ios8

我已经将一堆文件添加到我的swift项目文件夹中,如下所示:

enter image description here

我需要在项目的某个点访问这些文件,有两个目的:

  1. 使用每个文件的名称来填充类别(即年龄,单独,惊人......)
  2. 访问文件中的数据以填充每个类别项页面
  3. 我已在我班级的viewDidLoad中实施此代码,以访问和遍历文件

    //get categories
    let fileManager = NSFileManager.defaultManager()
    let directoryPath = NSHomeDirectory() + "/Categories"
    let enumerator:NSDirectoryEnumerator = fileManager.enumeratorAtPath(directoryPath)!
    
    while let element = enumerator.nextObject() as? String {
      println(String(element))
    }
    

    这不起作用,并在fatal error: unexpectedly found nil while unwrapping an Optional value行上产生错误let enumerator:NSDirectoryEnumerator = fileManager.enumeratorAtPath(directoryPath)!。我怀疑(并纠正我,如果我错了),它正在访问应用程序内部文件结构,因此无法找到指定的文件。由于我是IOS开发的新手,我对其工作原理的一般理解充其量只是模糊不清。

    所以我是如何访问文件的?我已经按照我在图片中显示的方式添加了项目,以便迭代并获取我正在寻找的数据

    修改

    所以我改变了结构,使Categories文件夹成为一个实际的文件夹,如下所示:

    enter image description here

    我目前正在尝试使用NSBundle来访问应用程序路由,但我不知道该怎么做。任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:1)

问题是xcode的项目导航器文件夹不是磁盘中的实际文件夹。所以这个:

let directoryPath = NSHomeDirectory() + "/Categories"
您的硬盘中不存在

。如果你想要这个文件夹,你必须导航到你的硬盘上的项目文件夹,手动创建它并在其中添加你想要的文件。

您可以参考文件并按以下方式阅读:

let htmFile = NSBundle.mainBundle().pathForResource("aboutText", ofType: "html")
let htmlString = NSString(contentsOfFile: htmFile!, encoding: NSUTF8StringEncoding, error: nil)

对于json,您可以使用

获取字典
let jsonFile = NSBundle.mainBundle().pathForResource("aboutText", ofType: "json")
let dict = NSDictionary(contentsOfFile: jsonFile)