使用 Swift 2 in iOS 9 将 plist 文件读入 NSDictionary
reading a plist-file into a NSDictionary using Swift 2 in iOS 9
我定义了一个 class,它从文件中读取字典:
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 文件由 objective-c 应用程序创建,是一个字典,其中键和值是字符串。这似乎可行,但是当我尝试访问这本字典的内容时,我得到的键是
可选(mykeytext)
而不仅仅是 mykeytext 。当查找与键对应的值时,我得到 Optional(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())
}
}
显而易见的是使用密钥! and/or 比! - 但这会产生编译错误。
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 )
}
我定义了一个 class,它从文件中读取字典:
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 文件由 objective-c 应用程序创建,是一个字典,其中键和值是字符串。这似乎可行,但是当我尝试访问这本字典的内容时,我得到的键是 可选(mykeytext) 而不仅仅是 mykeytext 。当查找与键对应的值时,我得到 Optional(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())
}
}
显而易见的是使用密钥! and/or 比! - 但这会产生编译错误。
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 )
}