我想要我的 plist 中的字典,我可以在整个游戏场景中使用它。但是在我的解决方案中,我总是必须调用 parseConfig 函数才能从 plist 中获取字典。
struct Config: Decodable {
private enum CodingKeys: String, CodingKey {
case zPositions, enemy, player
}
let zPositions: [String:Double]
let enemy: [String:[String:Double]]
let player: [String:[String:Double]]
}
func parseConfig() -> Config {
let url = Bundle.main.url(forResource: "Config", withExtension: "plist")!
let data = try! Data(contentsOf: url)
let decoder = PropertyListDecoder()
return try! decoder.decode(Config.self, from: data)
}
最佳答案
尝试创建惰性属性。
类似于:- 如果使用 gloabaly
var parsedConfig: Config = {
let url = Bundle.main.url(forResource: "Config", withExtension: "plist")!
let data = try! Data(contentsOf: url)
let decoder = PropertyListDecoder()
return try! decoder.decode(Config.self, from: data)
}()
如果在类中,在var之前添加lazy
关于ios - swift plist 解码器全局 Spritekit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52908684/