以编程方式获取Bundle标识符

我怎样才能从我的应用程序内获得编程的string的Bundle标识符?

Objective-C的

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

Swift 1.2

 let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier 

Swift 3.0

 let bundleIdentifier = Bundle.main.bundleIdentifier 
 [[NSBundle mainBundle] bundleIdentifier]; 

( 文件 )

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

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

如果您正在尝试以编程方式获取,则可以使用以下代码行:

Objective-C的:

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

Swift 3.0:

让bundleIdentifier = Bundle.main.bundleIdentifier

更新为最新的迅速它将适用于iOS和Mac应用程序。

我使用这些macros来缩短它:

 #define BUNDLEID [NSString stringWithString:[[NSBundle mainBundle] bundleIdentifier]] #define BUNDLEIDEQUALS(bundleIdString) [BUNDLEID isEqualToString:bundleIdString] 

所以我可以像这样比较:

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

要在Swift 3.0中以编程方式获取包标识符:

Swift 3.0

 let bundle = Bundle.main.bundleIdentifier