swift中objective-NSDictionary(contentsOfFile)方法的替代方法[重复]
Posted
技术标签:
【中文标题】swift中objective-NSDictionary(contentsOfFile)方法的替代方法[重复]【英文标题】:Alternative to the objective-NSDictionary(contentsOfFile) method in swift [duplicate] 【发布时间】:2017-11-15 07:46:13 【问题描述】:我正在尝试解析一个 plist。
代码sn-p如下:
if let path = Bundle.main.path(forResource: Constants.plistName, ofType: Constants.plistType)
guard let myDictionary = NSDictionary(contentsOfFile: path) else
//throw some error
如果我将 myDictionary 的类型设置为 Dictionary,我将无法再使用 contentsOfFile 方法。 请帮忙。
【问题讨论】:
【参考方案1】:(推荐的)替代方案是PropertyListSerialization
let url = Bundle.main.url(forResource: Constants.plistName, withExtension: Constants.plistType)!
let data = try! Data(contentsOf: url)
let myDictionary = try! PropertyListSerialization.propertyList(from: data, format: nil) as! [String:Any]
【讨论】:
你为什么要把它转换成键类型字符串和值类型any的字典? 您之前回答过相同的问题:***.com/a/40437034/1187415。 因为属性列表字典的所有键都必须是String
并且所有支持的值类型的通用类型是 Any
- @MartinR 感谢您将其标记为重复。你的记忆力比我的好;)以上是关于swift中objective-NSDictionary(contentsOfFile)方法的替代方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章
将 Swift 3 升级到 4,目标 c 中不再有 swift 扩展
在 Swift 项目中使用 Objective C 类中的 Swift 类