如何通过Python脚本将JSON文件添加到.xcodeproj项目中?
现有方案的缺陷说明
- 数据库方案的冗余问题:纯展示场景下不需要额外做JSON到数据库的写入、读取适配,每日更新需要同步修改数据库、项目内数据库引用,额外增加了维护成本,只有当你需要对JSON数据做大量本地复杂查询时才有使用价值。
- 直接拷贝到Resources文件夹的核心问题:Xcode不会自动扫描项目物理目录的文件变动,所有需要打包进App的资源都需要在
.xcodeproj的项目索引中登记引用,你只拷贝物理文件没有更新项目索引,自然不会在Xcode中显示,也不会被打包进最终的App包。
推荐实现方案
方案1:自动同步资源+更新Xcode项目引用(适合JSON随App版本迭代更新的场景)
如果你是每次发版的时候更新一次JSON数据,不需要App端实时拉取最新数据,用这个方案最省事:
- 保留你的Python爬取逻辑,输出的JSON统一存在你本地的固定文件夹里。
- 用Xcode打开项目,在Resources文件夹上右键选择「Add Files to "你的项目名"」,选中你存JSON的文件夹,勾选以下两个选项:
- Copy items if needed(也可以不勾选直接引用原文件夹,这样Python更新JSON后不需要重复拷贝)
- Create groups / Create folder references:如果你的JSON都存放在根目录选前者,如果有多层目录结构选后者
- 「Add to targets」里勾选你要使用这些JSON的App目标
- 后续Python更新JSON后,如果你选择的是文件夹引用模式,直接覆盖原文件夹里的文件即可,Xcode会自动识别内容变动;如果是单独添加的文件引用,新增文件时可以用
xcodegen这类工具自动更新项目引用,无需手动操作。 - 代码里读取JSON的参考示例:
if let path = Bundle.main.path(forResource: "你的JSON文件名", ofType: "json") { do { let data = try Data(contentsOf: URL(fileURLWithPath: path)) // 解析JSON数据即可 } catch { print("读取JSON失败: \(error)") } }
方案2:App端拉取线上JSON(适合需要每日实时更新数据的场景)
如果你的JSON每天都要更新,不想每次更新都重新发版,可将Python生成的JSON部署到你自己的静态资源存储位置,App启动时异步拉取最新的JSON缓存到本地使用,无需将JSON打包进App安装包。
内容的提问来源于stack exchange,提问作者user15757576
相关产品推荐
相关产品推荐

