我已经在Swift 2中使用了这种方法
var myDict: NSDictionary? if let path = NSBundle.mainBundle().pathForResource("Config", ofType: "plist") { myDict = NSDictionary(contentsOfFile: path) }
但是不知道如何在不使用 NSDictionary(contentsOfFile:path)的* 情况下在Swift3中读取plist *
Swift的本机方法是使用 PropertyListSerialization
PropertyListSerialization
if let url = Bundle.main.url(forResource:"Config", withExtension: "plist") { do { let data = try Data(contentsOf:url) let swiftDictionary = try PropertyListSerialization.propertyList(from: data, format: nil) as! [String:Any] // do something with the dictionary } catch { print(error) } }
~~~~
您还可以使用NSDictionary(contentsOf:类型强制转换:
NSDictionary(contentsOf:
if let url = Bundle.main.url(forResource:"Config", withExtension: "plist"), let myDict = NSDictionary(contentsOf: url) as? [String:Any] { print(myDict) }
但您明确地写道: 不使用NSDictionary(contentsOf …
基本上,不要NSDictionary在Swift中不进行强制转换而使用,您将丢弃重要的类型信息。
NSDictionary