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中数组操作

iOS开发中OC和swift的对比

将 Swift 3 升级到 4,目标 c 中不再有 swift 扩展

在 Swift 项目中使用 Objective C 类中的 Swift 类

在 Swift 项目中使用 Objective C 类中的 Swift 类

swift swift中字符串中字符的迭代器