我正在从主infoDictionary
的{{1}}属性进行字典查找。这很正常:
NSBundle
但是,我想把它们连在一起。但是,当我这样做时,我收到编译器错误:
let infoDict = NSBundle.mainBundle().infoDictionary
var item = infoDict["CFBundleExecutable"]
if let stringValue = item as? String {
...
}
错误是:
if let stringValue = NSBundle.mainBundle().infoDictionary["CFBundleExecutable"] as? String {
...
}
我意识到这是那些神秘的Swift编译器消息之一,这意味着比它明确指出的东西更微不足道 - 但我无法确定我的两个代码片段之间的区别是什么 - 为什么一个有效,一个没有。< / p>
答案 0 :(得分:1)
String
不是对象;改为使用NSString
:
if let stringValue = NSBundle.mainBundle().infoDictionary["CFBundleExecutable"] as? NSString {
...
}
如果您希望stringValue
成为String
而不是NSString
:
if let stringValue:String = NSBundle.mainBundle().infoDictionary["CFBundleExecutable"] as? NSString {
...
}