如何从macOS中的.plist文件中读取多维数组?

时间:2018-02-13 13:05:29

标签: swift macos path plist

在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>

1 个答案:

答案 0 :(得分:1)

您无法将该plist内容视为 NSDictionary ,您可以从plist内容中看到它的类型为 [[String]] 。您可以对Swift 4使用 PropertyListDecoder ,但由于您使用的是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)")
}