簡體   English   中英

運行時,加載plist內容會導致“多次”崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM