[String: String]? { if let path = Bundle.m-6ren">
gpt4 book ai didi

ios - 运行时加载 plist 的内容会崩溃 "many"次之一

转载 作者:行者123 更新时间:2023-11-30 11:58:29 25 4
gpt4 key购买 nike

我有一个加载 plist 内容的函数:

func loadSecretDataFromPlist() -> [String: String]? {
if let path = Bundle.main.path(forResource: "SecretData", ofType: "plist") {
if let commonDict = NSDictionary(contentsOfFile: path) {
return (commonDict as! [String : String])
}
}

return nil
}

然后我有一个单例类,它调用此函数来加载此数据:

final class ClassA {
static var sharedInstance = ClassA()
var secretData = loadSecretDataFromPlist()!
// ... more functions and stuff below
}

大多数时候(例如 19/20),它会按预期运行。但时不时地,它会导致应用程序在函数的第 4 行崩溃,即 return (commonDict as![String: String])

控制台错误为无法从49868继承CoreMedia权限:(null) (lldb)

不太确定为什么或如何发生这种情况:/

最佳答案

我会延迟初始化secretData并使用PropertyListSerialization

final class ClassA {

static let sharedInstance = ClassA()

lazy var secretData : [String:String] = {
let url = Bundle.main.url(forResource: "SecretData", withExtension: "plist")!
let data = try! Data(contentsOF: url)
return try! PropertyListSerialization.propertyList(from: data, format: nil) as! [String:String]
}()
}

这样做的好处是,第一次访问属性时,数据会被读取一次

关于ios - 运行时加载 plist 的内容会崩溃 "many"次之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47518261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com