我的移动应用程序有很多硬编码数据,我想在应用程序的原生 Android 和 iOS 版本之间共享。我不想为每个应用程序创建两个设置文件:我希望有一个存储信息的地方。
我的第一个想法是使用嵌入在我的应用程序中的 JSON 文件并在运行时对其进行解码。
相反,我的目标是在编译时反序列化应用程序的数据,以便:
在发布应用程序之前跟踪 JSON 文件或解码代码中的潜在错误:构建将失败
避免在启动时被一些反序列化减慢
避免将未加密的应用程序数据保留为 JSON 文件(.ipa/.apk 是可以轻松提取资源的 zip 文件),我宁愿在代码中对其进行混淆
我正在寻找一个命令行工具,我可以将它添加到我的构建脚本中,该脚本给定一个 JSON 文件,从而推断出一个架构,从而推断出类并使用所有应用程序设置实例化一个对象。
例如给定以下 settings.json 文件:
{
"gravity": 9.81,
"scientists": ["Kepler", "Einstein", "Newton"],
"planets": [
{
"name": "Mars",
"radius": 3390
},
{
"name": "Venus",
"radius": 6052
}
]
}
我想自动生成一个 Settings.swift 文件,它可能如下所示:
struct Settings {
struct Planet {
var name: String
var radius: Int
}
var gravity: Double
var scientists: [String]
var planets: [Planet]
static func content() -> Settings {
return Settings(gravity: 9.81, scientists: ["Kepler", "Einstein", "Newton"], planets: [Planet(name: "Mars", radius: 3390), Planet(name: "Venus", radius: 6052)])
}
}
然后我可以将生成的文件包含到我的项目中并调用 Settings.content() 一次,将它保存在一个全局变量中并在我的整个项目中使用它。
我也想在 Android 上实现同样的目标。
像 quicktype 或 json2swift 这样的工具完成了一半的工作并且不生成对象实例化位,这仍然需要在运行时完成。
任何的想法?
跃然一笑
幕布斯7119047
相关分类