如何将OS X应用程序的产品捆绑包标识符用于错误域?这样使用有什么陷阱吗?
它似乎没有定义为宏;我尝试过:
NSErrorDomain BSDomain = PRODUCT_BUNDLE_IDENTIFIER;
这会导致错误:
使用未声明的标识符“ PRODUCT_BUNDLE_IDENTIFIER”
答案 0 :(得分:0)
似乎构建设置变量在命令行上可用,尽管不在源文件中。对于任何此类变量,都可以手动preprocessor macro定义"Add preprocessor macro to a target in xcode 6"(另请参见based on the variable)。可以为宏和设置指定不同的名称,但为它们指定相同的名称可能会更有意义。
在这种情况下,值应以“ @”开头,并用转义的双引号引起来,因此它们是宏的一部分,并且在替换宏时将被包括在内。如果任一个都不设置,则宏值将不是有效的NSString常数(用作NSErrorDomain值时必需)。该宏应添加到所有配置(调试,发布和任何用户定义的)中。
PRODUCT_BUNDLE_IDENTIFIER=@\"$(PRODUCT_BUNDLE_IDENTIFIER)\"
如果产品捆绑包ID也将以其他方式使用,则可以使用原始值(PRODUCT_BUNDLE_IDENTIFIER=$(PRODUCT_BUNDLE_IDENTIFIER)
)定义宏,并在使用地点引入适当的语法:
NSErrorDomain BSDomain = @"PRODUCT_BUNDLE_IDENTIFIER";