怎么能实现这一目标?我想得到这个名字,所以我可以在一个应用程序中显示它,而不必在每次更改名称时更改代码,当然.
epa*_*tel 138
试试这个
NSBundle *bundle = [NSBundle mainBundle];
NSDictionary *info = [bundle infoDictionary];
NSString *prodName = [info objectForKey:@"CFBundleDisplayName"];
Run Code Online (Sandbox Code Playgroud)
imn*_*mnk 54
这里的答案很好.我会添加一件事.
而不是使用@"CFBundleDisplayName",它有可能在将来发生变化,最好将CFBundle.h中提供的字符串常量强制转换为:
[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
Run Code Online (Sandbox Code Playgroud)
从而使您的代码面向未来.
gup*_*ron 39
根据Apple的说法,- objectForInfoDictionaryKey:直接在NSBundle对象上使用是首选:
使用此方法优于其他访问方法,因为它在可用时返回键的本地化值.
这是Swift中的一个例子:
let appName = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName") as! String
// Or use key "CFBundleDisplayName"
Run Code Online (Sandbox Code Playgroud)
Swift 3的更新 - 谢谢杰夫.
let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String
Run Code Online (Sandbox Code Playgroud)
tok*_*ken 13
我通过使用InfoPlist.strings本地化我的应用程序名称时出现问题
CFBundleDisplayName = "My Localized App Name";
Run Code Online (Sandbox Code Playgroud)
如果我使用infoDictionary,我无法获得本地化的应用程序名称.
在那种情况下,我使用了像下面的localizedInfoDirectory.
NSDictionary *locinfo = [bundle localizedInfoDictionary];
Run Code Online (Sandbox Code Playgroud)
你可以使用直接方法,
NSString* appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];
Run Code Online (Sandbox Code Playgroud)
为了完整起见,Swift 3.0将是;
let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as! String
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33585 次 |
| 最近记录: |