如何从 macOS 中的 .plist 文件中读取多维数组?
How to read a multidimensional array from a .plist file in macOS?
在 macOS 项目中,我必须读取 .plist 文件的内容并将其插入到多维数组中。没有找到太多 material 的 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)")
}
在 macOS 项目中,我必须读取 .plist 文件的内容并将其插入到多维数组中。没有找到太多 material 的 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)")
}