从Info.plist读取时,强制转换失败

时间:2018-01-29 21:40:07

标签: ios swift xcode

我尝试访问Info.plist内存储的值,第二行root = NSDictionary...失败。

但我可以这样做打开我的其他文件Common.plist

if let path = Bundle.main.path(forResource: "Info", ofType: "plist"),
   let root = NSDictionary(contentsOfFile: path) as? [String: String] {

为什么我在打开Info.plist时遇到问题?

4 个答案:

答案 0 :(得分:4)

Info.plist不是[String:String]。它可以包括任何符合属性列表的类型。

但是有一个非常方便的快捷方式

let root = Bundle.main.infoDictionary

返回[String:Any]

答案 1 :(得分:1)

Info.plist文件的内容不仅包括String:String值,还包括String:Number等。所以String:AnyObject应该可以工作。

答案 2 :(得分:0)

看看你的Info.plist。存储了各种各样的东西 - 不只是String。如果您更改为let root = NSDictionary(contentsOfFile: path) as? [String: Any],您将开始通过该检查。

答案 3 :(得分:0)

你可以这样取:

func fetchData(){

        if let path = Bundle.main.path(forResource: "YourPlistName", ofType: "plist") {

            if let dicObj = NSDictionary(contentsOfFile: path) as? [String: Any] {

            }
        }
    }