拖放到 Xcode 后无法读取 JSON 文件 - Xcode/Swift

Posted

技术标签:

【中文标题】拖放到 Xcode 后无法读取 JSON 文件 - Xcode/Swift【英文标题】:Can't read JSON file after dragging and dropping into Xcode - Xcode/Swift 【发布时间】:2017-09-15 17:54:20 【问题描述】:

我不敢相信我被困在了如此简单的任务中。

我有一个名为 recipes.json 的 json 文件,我将它拖放到我的项目中,并检查了“如果需要,请复制项目”。 但是无论如何我都无法访问它。

 func parseRecipesJSON(jsonFile: String) -> [RecipeItem] 
    var recipesArray = [RecipeItem]()

    do 
        let jsonFile = Bundle.main.url(forResource: jsonFile, withExtension: "json")
        print("## ", jsonFile as Any)
        let data = try Data(contentsOf: jsonFile!)
        let json = try JSONSerialization.jsonObject(with: data, options: [])
        // my code
     catch 
        print(error)
    

    return recipesArray

应用程序在 let data = try 行崩溃。上一行输出 nil。 显然,即使我将它复制到 Xcode 项目中,该文件也不存在。我也无法在模拟器的文件中找到它。我在这里做错了什么?

编辑:相同的代码在 Playground 中运行良好。 将文件放入共享的 Playgrounds 文档文件夹后,我必须使用 let fileURL = PlaygroundSupport.playgroundSharedDataDirectory.appendingPathComponent(jsonFile)

【问题讨论】:

【参考方案1】:

要检查的两件事。

    jsonFile 实际上包含正确的名称吗?应该是"recipes"。 您是否将 JSON 文件添加到您的目标?如果您转到 Build Phases,它应该会显示在 Copy Bundle Resources 中。由于它是一个资源文件,如果您选择它并查看文件检查器,在 Target Membership 列表中,有问题的目标应该显示为选中。如果没有,检查它应该将其添加到 Copy Bundle Resources。

【讨论】:

是的,它是#2 :) 我认为只要通过拖放将文件复制到 Xcode 中,它就会自动完成。谢谢

以上是关于拖放到 Xcode 后无法读取 JSON 文件 - Xcode/Swift的主要内容,如果未能解决你的问题,请参考以下文章

Xcode Swift MacOS App,将文件拖放到 NSTextField

XCode4 - 不允许将组拖放到组

拖放在 Xcode 中不起作用

拖放到动态创建的 div 后,Jquery-ui 可拖动无法正常工作

如何手动将 Alamofire 添加到 xcode 项目中

Xcode 9:SKEditorReference不允许动画?