【问题标题】:Invalid filename/path when getting JSON获取 JSON 时文件名/路径无效
【发布时间】:2016-10-19 11:53:32
【问题描述】:

在我的项目导航器中,我有这个结构

-MyApp
--ViewController.swift
--AppDelegate.Swift
--Main.StoryBoard
--info.plist
--JSONFiles
---test.json
-MyAppUITests

如您所见,这是创建新的单视图应用程序时发生的非常基本的结构。

我创建了一个名为 JSONFiles 的新组,并添加了一个名为 test.json 的 JSON 文件。

当我尝试使用以下方式获取文件时:

if let path = Bundle.main.path(forResource: "JSONFiles/test", ofType: "json") {
            do {
                let data = try NSData(contentsOf: URL(fileURLWithPath: path), options: NSData.ReadingOptions.mappedIfSafe)
                let jsonData : NSData = NSData(contentsOfFile: path)!
                allEntries = (try! JSONSerialization.jsonObject(with: jsonData as Data, options: JSONSerialization.ReadingOptions.mutableContainers)) as! NSArray

                print(allEntries)

            } catch let error as NSError {
                print(error.localizedDescription)
            }
        } else {
            print("Invalid filename/path.")
        }

我得到错误:

文件名/路径无效。

如果我将 JSON 文件移至我们的组文件夹并将 forResource 更改为“测试”,它可以正常工作并在控制台中打印。

能告诉我如何让它从文件夹中读取吗?我可以将所有 JSON 文件放在根目录中,但我想稍微整理一下。

谢谢

【问题讨论】:

  • 尝试“test”作为文件名
  • Bundle.main.path(forResource: "test", ofType: "json", inDirectory: "JSONFiles") 工作吗?
  • 您检查编译后的应用程序包中的目录结构是否如您所愿?
  • 组(黄色文件夹)是项目层次结构中的虚拟文件夹,它在文件系统中不存在物理上(与蓝色文件夹不同,它们是真实文件夹)。您的文件应该在文件夹Resources 中,而不是在任何子文件夹中。
  • @MartinR 我不知道如何检查,帮助?

标签: ios json swift


【解决方案1】:

您必须将您的 json 文件包含在“复制捆绑资源”中。转到您的项目目标 -> 构建阶段 -> 复制捆绑资源,然后添加您的 json 文件。

然后,您应该可以使用以下函数检索路径:Bundle.main.path(forResource: "test", ofType: "json")。

【讨论】:

    猜你喜欢
    • 2011-11-16
    • 2020-05-17
    • 2012-01-21
    • 2011-01-11
    • 2015-04-22
    • 2014-07-24
    • 2012-10-25
    • 1970-01-01
    相关资源
    最近更新 更多