在iOS 9中使用Swift 2将plist文件读入NSDictionary

时间:2015-10-31 14:32:16

标签: nsdictionary swift2 ios9

我有一个定义的类,它从文件读入一个字典:

import Foundation
class Orte_c {
    var meineOrte = NSDictionary()

    init() {
        if let path = NSBundle.mainBundle().pathForResource("mySites",             ofType: "plist") {
        let x = NSDictionary(contentsOfFile: path)
        meineOrte = x!
    }
}
} // end Orte_c

plist-file是由objective-c app创建的,是一个字典,其中键和值是字符串。这似乎有效,但是当我尝试访问这个字典的内容时,我得到了读取的密钥 的可选(mykeytext) 而不只是 mykeytext 。当查找与键对应的值时,我得到可选(myvaluestring)而不是 myvaluestring 。因此我的问题是:如何摆脱这个Optional() - 子句?它肯定不在我的plist文件中。

@IBAction func meinTest(sender: AnyObject) {
    let x = mO.meineOrte    // mO is defined as var mO = Orte_c()
    print("x includes \(x.count) elements")
    var key: String; var vs: String;
    let enumerator: NSEnumerator = x.keyEnumerator()
    key = String(enumerator.nextObject())
    while key != "nil" {
        vs = String(x.valueForKey(key))
        print("key:" + key + " size:\(key.characters.count)" + " value:" + vs )
        key = String(enumerator.nextObject())
    }
}

显而易见的是使用密钥!和/或vs! - 但这会产生编译错误。

1 个答案:

答案 0 :(得分:2)

Swift有更有效的方法来枚举字典

let x = mO.meineOrte as! [String:String]  // mO is defined as var mO = Orte_c()
print("x includes \(x.count) elements")
for (key, value) in x {
  print("key:" + key + " value:" + value )
}