以编程方式获取捆绑标识符
Posted
技术标签:
【中文标题】以编程方式获取捆绑标识符【英文标题】:Obtain Bundle Identifier programmatically 【发布时间】:2012-01-16 16:33:24 【问题描述】:如何从我的应用程序中的字符串?
【问题讨论】:
【参考方案1】:目标-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
【讨论】:
这个答案不限于iOS。它也适用于 Mac 应用程序。 在 Swift 中,使用let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
(您可以删除此评论)但我喜欢阅读答案然后在评论中看到类似@Jonny s 和 Tim(尽管您可以在另一个完整答案中看到)的感觉,它链接到其他仍然相关和有用的东西。感谢伟大的社区伙伴。
Swift3: Bundle.main.bundleIdentifier!
【参考方案2】:
[[NSBundle mainBundle] bundleIdentifier];
(documentation)
【讨论】:
在 Swift 中,使用let bundleIdentifier = NSBundle.mainBundle().bundleIdentifier
【参考方案3】:
您可能需要核心基础方法来获得价值。 ARC 示例如下:
NSString *value = (__bridge_transfer NSString *)CFDictionaryGetValue(CFBundleGetInfoDictionary(CFBundleGetMainBundle()),
(const void *)(@"CFBundleIdentifier"));
【讨论】:
【参考方案4】:在 Swift 3.0 中以编程方式获取包标识符:
Swift 3.0
let bundle = Bundle.main.bundleIdentifier
【讨论】:
【参考方案5】:如果您尝试以编程方式获取它,您可以使用以下代码行:
目标-C:
NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier];
斯威夫特 3.0:
let bundleIdentifier = Bundle.main.bundleIdentifier
已更新为最新的 swift 它适用于 iOS 和 Mac 应用程序。
【讨论】:
【参考方案6】:我使用这些宏来缩短它:
#define BUNDLEID [NSString stringWithString:[[NSBundle mainBundle] bundleIdentifier]]
#define BUNDLEIDEQUALS(bundleIdString) [BUNDLEID isEqualToString:bundleIdString]
所以我可以这样比较:
if (BUNDLEIDEQUALS(@"com.mycompany.myapp")
//do this
【讨论】:
以上是关于以编程方式获取捆绑标识符的主要内容,如果未能解决你的问题,请参考以下文章
是否可以以编程方式从 Swift/Objective-C 中的 UIViewController 或 Storyboard 中获取基本 UIViewController 的标识符?