[英]Loading contents of a plist crashes one out of “many” times when running
我有一個加載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),它會按預期運行。 但是有時,它會導致應用程序在函數的第四行崩潰,這是return (commonDict as! [String: String])
控制台錯誤Failed to inherit CoreMedia permissions from 49868: (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]
}()
}
好處是,第一次訪問屬性時,數據將被讀取一次
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.