1. ホーム
  2. cocoa

[解決済み] Swiftでアプリ名を取得する

2023-07-03 16:07:42

質問

Swiftでアプリケーション名を取得する方法は?

ググるとこんなのがありました。

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];

Swiftに変換してみました。エラー - メソッドが存在しません。

NSBundle.mainBundle().infoDictionary.objectForKey("CFBundleName")

どのように解決するのですか?

これは動作するはずです。

NSBundle.mainBundle().infoDictionary!["CFBundleName"] as! String

infoDictionary が宣言されているのは var infoDictionary: [NSObject : AnyObject]! として宣言されているので、アンラップし、Swift の辞書としてアクセスしなければなりません (むしろ objectForKey を使うのではなく)Swift の辞書としてアクセスしなければならず、その結果は AnyObject であるため、それをキャストします。

Swift 3 のアップデート (Xcode 8 beta 2)

可能な限り定数(とオプショナル)を使用する方が常に良いですね。

Bundle.main.infoDictionary?[kCFBundleNameKey as String] as? String