无法从项目子文件夹中读取文件

Posted

技术标签:

【中文标题】无法从项目子文件夹中读取文件【英文标题】:Cannot read file from project subfolder 【发布时间】:2018-06-11 12:53:33 【问题描述】:

我需要从项目子文件夹中读取 json

我的项目文件夹结构如下:

我的代码是:

if let url = Bundle.main.url(forResource: "default", withExtension: "json", subdirectory: "Localization")
            do 
                let data = try Data(contentsOf: url)
                let decoder = JSONDecoder()
                let jsonData = try decoder.decode(Class.self, from: data)

             catch 
                print("error:\(error)")
            
        

我在 *** 和其他页面上看到了另一个解决方案,但所有这些都看起来像我的,但在我的情况下,url 始终是nil 在这种情况下我的错误是什么?

【问题讨论】:

确保您已添加正确的 Target ,如果需要,请在拖放时复制项目复选框 true 我从 XCode 菜单中创建了组和文件 您是否尝试删除该子目录部分? 确保您的文件存在于 Copy Bundle 资源中 请注意,Xcode 中的黄色文件夹是虚拟组,它们都代表文件夹Resources。捆绑包中的真实(子)文件夹是蓝色的。请看***.com/questions/50004553/… 【参考方案1】:

确保您的default.json 文件存在于您的应用目标的Build Phases 中的Copy Bundle Resources 中。

然后你可以使用它访问它,不需要subdir

if let path = Bundle.main.path(forResource: "default", ofType: "json") 
    do 
        let data = try Data(contentsOf: URL(fileURLWithPath: path))
     catch 
        print(error.localizedDescription)
    

【讨论】:

以上是关于无法从项目子文件夹中读取文件的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Java Spring Boot 项目中的 application.yml 文件中读取用户定义类的列表

从项目的原始文件夹中读取 .pdf

无法从目录中读取文件 - android

无法从资源中读取文件

无法从 Spring Boot 中的外部属性文件中读取值

c++intellisense信息可能过时头文件无法读取