【问题标题】:trouble accessing files loaded into project访问加载到项目中的文件时遇到问题
【发布时间】:2015-03-11 15:23:30
【问题描述】:

我在我的 swift 项目文件夹中添加了一堆文件,如下所示:

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

  1. 使用每个文件的名称来填充类别(即 Age、Alone、Amazing...)
  2. 访问文件中的数据以填充每个类别项目页面

我已经在我的班级的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))
}

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

那么究竟如何访问我已经按照我在图片中显示的方式添加项目的文件,以便遍历并获取我正在寻找的数据

编辑

所以我改变了结构,使 Categories 文件夹成为真正的文件夹,如下所示:

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

【问题讨论】:

    标签: xcode swift ios8


    【解决方案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)
    

    【讨论】:

    • 感谢您的及时回复。不过我想知道,我需要获取文件夹目录路径,并遍历特定类型的文件列表。所以在这种情况下,我不知道文件的名称只有类型,所以let htmFile = NSBundle.mainBundle().pathForResource("aboutText", ofType: "html") 不起作用,因为它假设我知道pathForResource
    • 还添加了一个将 json 文件解析为字典的示例。
    • 您知道文件夹中的文件,因此您可以遍历所有文件。
    • 如果您将文件放在磁盘中的实际文件夹中,您可以使用此答案获取它们的标题stackoverflow.com/questions/6398937/…
    • 问题在于以编程方式获取每个文件名,而不是手动获取。
    猜你喜欢
    • 1970-01-01
    • 2017-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多