Get App Name in Swift
This should work:
NSBundle.mainBundle().infoDictionary!["CFBundleName"] as! String
infoDictionary
is declared as a var infoDictionary: [NSObject : AnyObject]!
so you have to unwrap it, access it as a Swift dictionary (rather than use objectForKey
), and, as the result is an AnyObject
, cast it.
Update Swift 3 (Xcode 8 beta 2)
Always better to use constants (and optionals) where possible, too:
Bundle.main.infoDictionary?[kCFBundleNameKey as String] as? String
I believe this solution is more elegant. What's more, using object(forInfoDictionaryKey:)
is encouraged by Apple:
"Use of this method is preferred over other access methods because it returns the localized value of a key when one is available."
extension Bundle {
var displayName: String? {
return object(forInfoDictionaryKey: "CFBundleDisplayName") as? String
}
}
Accessing bundle display name:
if let displayName = Bundle.main.displayName {
print(displayName)
}