以编程方式获取Bundle标识符

239

我如何在应用程序内以编程方式获取Bundle标识符的字符串?

6个回答

469

Objective-C

NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];

Swift 1.2

let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier

Swift 3.0

let bundleIdentifier = Bundle.main.bundleIdentifier

Xamarin.iOS

var bundleIdentifier = NSBundle.MainBundle.BundleIdentifier

10
这个答案不仅适用于iOS,也适用于Mac应用程序。 - Jonny
9
在Swift中,使用let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier来获取应用程序的包标识符。 - Tim Arnold
1
但我喜欢读完答案后,在评论中看到像 @Jonny s 和 Tim 这样的东西(尽管你也可以在另一个完整的答案中看到这个),它链接到其他仍然相关和有用的东西。感谢大家伟大的社区。 - haxpor
2
Swift3: Bundle.main.bundleIdentifier! - Sebastian Roth

50
[[NSBundle mainBundle] bundleIdentifier];

(文档)


在Swift中,使用let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier - Tim Arnold

3
Swift 3.0 中,可以通过编程方式获取捆绑标识符:
let bundle = Bundle.main.bundleIdentifier

3

您可能需要使用Core Foundation方法来获取值。以下是ARC示例:

NSString *value = (__bridge_transfer NSString *)CFDictionaryGetValue(CFBundleGetInfoDictionary(CFBundleGetMainBundle()),
                                                                     (const void *)(@"CFBundleIdentifier"));

1
如果您想以编程方式获取它,可以使用以下代码行:
Objective-C:
NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];

Swift 3.0 :

let bundleIdentifier =  Bundle.main.bundleIdentifier

更新为最新的Swift,适用于iOS和Mac应用程序。


0

我使用这些宏来使代码更短:

#define BUNDLEID    [NSString stringWithString:[[NSBundle mainBundle] bundleIdentifier]]

#define BUNDLEIDEQUALS(bundleIdString) [BUNDLEID isEqualToString:bundleIdString]

所以我可以这样比较:

if (BUNDLEIDEQUALS(@"com.mycompany.myapp") {
    //do this
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接