【发布时间】:2018-06-26 12:24:53
【问题描述】:
我有一个 .plist 文件,我将在其中存储用户以后可以读取/修改的不同位置。但我似乎无法让代码工作......
我的 .plist:
<dict>
<key>MAIN TITLE</key>
<array>
<dict>
<key>name</key>
<string>NAME IN TABLECELL</string>
</dict>
<dict>
<key>name</key>
<string>X</string>
</dict>
</array>
</dict>
我想让MAIN TITLE 成为该部分的标题。
我的代码是:
func readPlist() {
guard let fileUrl = Bundle.main.url(forResource: "SavedPlaces", withExtension: "plist") else { return }
do {
let data = try Data.init(contentsOf: fileUrl)
let plist = try! PropertyListSerialization.propertyList(from:data, options: [], format: nil) as! [[String:Any]]
print(plist)
} catch {
print(error.localizedDescription)
}
}
但这会引发几个错误,其中:
Thread 1: signal SIGABRT
Could not cast value of type '__NSCFDictionary' (0x10b39ddd8) to 'NSArray' (0x10b39e008).
有没有一种方法可以在不使用 NSArray、NSDictionary 等的情况下获取所有值?
谢谢。
【问题讨论】:
-
您的 plist 是顶层的
Dictionary(开头是<dict>),而不是Array。而[[String:Any]]是Array的Dictionaries,所以无法进行转换。
标签: ios swift uitableview plist