pab*_*ros 3 nsdata swift swift3
我正在尝试property list从DataSwift 3中读取一个,但我无法实现.
我尝试过这样的事情:
let datasourceDictionary = try! PropertyListSerialization.propertyList(from: data!, options: [PropertyListSerialization.ReadOptions], format: nil) as! Dictionary
Run Code Online (Sandbox Code Playgroud)
我得到了这个错误:
无法将"PropertyListSerialization.ReadOptions.Type"类型的值(也称为"PropertyListSerialization.MutabilityOptions.Type")转换为预期的元素类型"PropertyListSerialization.MutabilityOptions"
然后我尝试了类似这样的东西,就像我以前在Swift 1.2上做的那样:
let datasourceDictionary = try! PropertyListSerialization.propertyList(from: data!, options: [PropertyListSerialization.MutabilityOptions.immutable], format: nil) as! Dictionary
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
'immutable'不可用:使用[]构造一个空选项集
然后我尝试了这个:
let datasourceDictionary = try! PropertyListSerialization.propertyList(from: data!, options: [], format: nil) as! Dictionary
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
'[Any]'不能转换为'PropertyListSerialization.ReadOptions'(又名'PropertyListSerialization.MutabilityOptions')
如何property list从"Swift 3中的数据"中读取文件或者执行此操作的方法是什么?
Dictionary 是一种泛型类型,需要键和值的类型信息.
使用Dictionary<String,Any>或更短[String:Any]:
let datasourceDictionary = try! PropertyListSerialization.propertyList(from:data!, format: nil) as! [String:Any]
Run Code Online (Sandbox Code Playgroud)
该options参数可以省略.
小智 8
你应该设置选项"[]"
let pathStr = Bundle.main.path(forResource: "Info", ofType: "plist")
let data :NSData? = NSData(contentsOfFile: pathStr!)
let datasourceDictionary = try! PropertyListSerialization.propertyList(from: data as! Data, options: [], format: nil) as! [String:Any]
print(datasourceDictionary.self)
Run Code Online (Sandbox Code Playgroud)