How do I get the application name in Swift?
Googling gave me this:
[[[NSBundle mainBundle] infoDictionary] objectForKey:@\"CFBundleName\"];
This should be more like what you are looking for:
let infoDictionary: NSDictionary = NSBundle.mainBundle().infoDictionary as NSDictionary!
let appName: NSString = infoDictionary.objectForKey("CFBundleName") as NSString
NSLog("Name \(appName)")
There may still be a better way to do this but it at least returns the app name correctly in my very limited testing...
let bundleInfoDict: NSDictionary = NSBundle.mainBundle().infoDictionary!
let appName = bundleInfoDict["CFBundleName"] as String
Try this one,
let bundleID = NSBundle.mainBundle().bundleIdentifier
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 where possible, too:
Bundle.main.infoDictionary![kCFBundleNameKey as String] as! String
Swift 4
let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as! String
let appDisplayName = Bundle.main.infoDictionary?["CFBundleName"] as? String
It's optional, so put it in if let or guard statement.