[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]
cette API renvoie le nom d'affichage du paquet dans la pliste.
Cependant, mon application est localisée et a un nom d'affichage différent.
je dois donc obtenir un nom d'affichage localisé dans InfoPlist.strings
qui devrait varier en fonction du réglage de la langue de l'appareil.
Avez-vous essayé -[NSBundle localizedInfoDictionary]
?
[[[NSBundle mainBundle] localizedInfoDictionary]
objectForKey:@"CFBundleDisplayName"]
Je suggère d'utiliser kCFBundleNameKey
:
[[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleNameKey]
Essayez ceci pour Swift:
// Localized
if let displayName = Bundle.main.localizedInfoDictionary?["CFBundleDisplayName"] as? String {
print("App Display Name - \(displayName)")
}
// Non-Localized
if let displayName = Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String {
print("App Display Name - \(displayName)")
}
Essayez aussi ceci si vous n'avez pas encore défini Nom d'affichage.
// Localized
if let appName = Bundle.main. localizedInfoDictionary?["CFBundleName"] as? String {
print("App Name - \(appName)")
}
// Non-Localized
if let appName = Bundle.main.infoDictionary?["CFBundleName"] as? String {
print("App Name - \(appName)")
}
Truc utile:
// Print bundle info dictionary to get complete details about app
print("Bundle.main.infoDictionary - \(Bundle.main.infoDictionary)")
print("Bundle.main.localizedInfoDictionary - \(Bundle.main.localizedInfoDictionary)")
Swift 3.0
class Utils {
static var localizedAppName: String? {
return Bundle.main.localizedInfoDictionary?["CFBundleDisplayName"] as! String?
}
}
Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String ?? ""
L'utilisation de cette méthode est préférable aux autres méthodes d'accès car elle renvoie la valeur localisée d'une clé lorsqu'elle est disponible.