首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取目标名称?

如何获取目标名称?
EN

Stack Overflow用户
提问于 2013-09-13 17:39:27
回答 3查看 29.1K关注 0票数 40

我们知道Xcode维护着${TARGET_NAME}的环境变量,但是如何在objective-C代码中访问这个变量呢?

我都试了些什么?

我已经在构建设置的预处理器宏部分添加了"TARGET_NAME=${TARGET_NAME}"。但是现在我不确定如何在objective-C代码中将这个变量"TARGET_NAME"用作字符串。

在我的例子中,产品名称和目标名称是不同的,所以没有机会使用它。

我尝试使用以下命令访问

代码语言:javascript
复制
#ifdef TARGET_NAME
 NSLog(@"TargetIdentifier %@",TARGET_NAME);
#endif

这段代码给出了类似于“使用未声明的标识符'myapptargetname'”的错误

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-19 07:11:41

您可以在Info.plist文件中添加"TargetName“密钥:

然后你可以访问它(快速代码):

代码语言:javascript
复制
var plistFileName = NSBundle.mainBundle().infoDictionary?["TargetName"] as String
票数 65
EN

Stack Overflow用户

发布于 2019-04-09 18:55:21

我必须信任the original answer by vk.edward.li,因为这个答案只是对它的扩展。

所有的构建设置宏也可以很容易地在源代码中作为预处理器宏使用。问题是,它们不是预先设置的;您必须自己指定您有权访问哪些文件。

我已经添加了三个额外的预处理器宏。只需单击+,并添加以下内容:TARGET_NAME=\""$TARGET_NAME"\",您就可以访问另一个构建设置宏。

Project settings ––> Build Settings ––> Apple Clang - Preprocessing[Preprocessor Macros]。请注意,如果您尝试同时为两种编译模式插入它们,DEBUG=1宏将被删除,但随后可以很容易地将其添加回来。

还值得注意的是,不同的语言应该设置不同的宏值:Objective-CC++/Swift等。这是由于Objective-C中使用的NSString前缀,因此对于该语言,它应该是MACRO=@\""$MACRO"\"而不是MACRO=\""$MACRO"\"

票数 0
EN

Stack Overflow用户

发布于 2017-04-01 05:46:45

在Xcode 7.3.1中

代码语言:javascript
复制
if let targetName = NSBundle.mainBundle().infoDictionary?["CFBundleName"] as? String{
    print(targetName)
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18783055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档