【发布时间】:2018-07-23 20:47:11
【问题描述】:
在 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.为什么读取文件的文件类型设置为nil? 2. resourceFileDictionary = NSDictionary(contentsOfFile: path) 不完整。
-
3.您的 plist 显示一个数组的数组,而不是与 resourceFileDictionary 不同的字典。
-
@El Tomato,感谢您报告错误。我已经更新了问题。
-
文件是在文档文件夹中还是在捆绑包中?您的代码令人困惑。除此之外使用
PropertyListSerialization,而不是NSArray / NSDictionaryAPI 来读取plist 文件。而如果文件是属性列表文件,为什么文件扩展名不是plist? -
@vadian,实际上该文件位于文档文件夹中,而不是捆绑包中。感谢您提供的非常有用的 cmets。