【发布时间】:2012-01-16 16:33:24
【问题描述】:
如何从我的应用程序中以编程方式获取捆绑标识符的字符串?
【问题讨论】:
标签: ios cocoa-touch
如何从我的应用程序中以编程方式获取捆绑标识符的字符串?
【问题讨论】:
标签: ios cocoa-touch
目标-C
NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
斯威夫特 1.2
let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
斯威夫特 3.0
let bundleIdentifier = Bundle.main.bundleIdentifier
Xamarin.iOS
var bundleIdentifier = NSBundle.MainBundle.BundleIdentifier
【讨论】:
let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
Bundle.main.bundleIdentifier!
[[NSBundle mainBundle] bundleIdentifier];
【讨论】:
let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
您可能需要核心基础方法来获得价值。 ARC 示例如下:
NSString *value = (__bridge_transfer NSString *)CFDictionaryGetValue(CFBundleGetInfoDictionary(CFBundleGetMainBundle()),
(const void *)(@"CFBundleIdentifier"));
【讨论】:
在 Swift 3.0 中以编程方式获取包标识符:
Swift 3.0
let bundle = Bundle.main.bundleIdentifier
【讨论】:
如果您尝试以编程方式获取它,您可以使用以下代码行:
目标-C:
NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
斯威夫特 3.0:
let bundleIdentifier = Bundle.main.bundleIdentifier
已更新为最新的 swift 它适用于 iOS 和 Mac 应用程序。
【讨论】:
我使用这些宏来缩短它:
#define BUNDLEID [NSString stringWithString:[[NSBundle mainBundle] bundleIdentifier]]
#define BUNDLEIDEQUALS(bundleIdString) [BUNDLEID isEqualToString:bundleIdString]
所以我可以这样比较:
if (BUNDLEIDEQUALS(@"com.mycompany.myapp") {
//do this
}
【讨论】: