簡體   English   中英

如何從 macOS 中的 .plist 文件讀取多維數組?

[英]How to read a multidimensional array from a .plist file in macOS?

在 macOS 項目中,我必須讀取 .plist 文件的內容並將其插入到多維數組中。 沒有找到太多關於 macOS 的材料,我閱讀了面向 iOS 編程的教程和問題。

我創建了一個我認為可以工作的代碼,但是在讀取文件內容時,它失敗了。 我究竟做錯了什么? 謝謝。

 // Edited

 let filePath = documentDirectory + "/Docs/" + "MyFile" + ".plist"
 var resourceFileArray: NSArray?

 //load the content of the plist file
 if let path = Bundle.main.path(forResource: (filePath), ofType: "plist") {
     resourceFileArray = NSArray(contentsOfFile: path)
 }

 if let resourceFileArrayContent = resourceFileArray {
     print(resourceFileArrayContent)
 } else {
     print("error")     // it always falls here
 }

plist 文件的內容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <array>
        <string>One</string>
        <string>false</string>
        <string></string>
        <string></string>
        <string>false</string>
        <string>false</string>
        <string>false</string>
    </array>
</array>
</plist>

您無法將 plist 內容作為NSDictionary 獲取,您可以從 plist 內容中看到它的類型為[[String]] 您可以將PropertyListDecoder用於 Swift 4,但由於您使用的是 Swift 3,因此您可以像這樣使用 PropertyListSerialization,

do {
  let data = try Data(contentsOf: plistFileURL)
  let output = try PropertyListSerialization.propertyList(from: data,
                                                       options: [],
                                                       format: nil) as! [[String]]

} catch {
  print("Error occurred: \(error.localizedDescription)")
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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