OS X应用程序的产品 bundle 包标识符如何用于错误域?这样使用有什么陷阱吗?

它似乎没有定义为宏。我试过了:

NSErrorDomain BSDomain = PRODUCT_BUNDLE_IDENTIFIER;

这会导致错误:

最佳答案

似乎构 build 置变量在命令行上可用,尽管不在源文件中。对于任何此类变量,可以手动定义preprocessor macro(另请参见"Add preprocessor macro to a target in xcode 6")based on the variable。可以给宏和设置指定不同的名称,但是可能给它们指定相同的名称会更有意义。

在这种情况下,该值应以“@”开头,并用转义的双引号引起来,因此它们是宏的一部分,并且在替换宏时将被包括在内。如果任一个都不设置,则该宏值将不是有效的NSString常量(用作NSErrorDomain值时必须使用)。该宏应添加到所有配置(调试,发布和任何用户定义的)。

PRODUCT_BUNDLE_IDENTIFIER=@\"$(PRODUCT_BUNDLE_IDENTIFIER)\"

如果产品 bundle 包ID也将以其他方式使用,则可以使用原始值(PRODUCT_BUNDLE_IDENTIFIER=$(PRODUCT_BUNDLE_IDENTIFIER))定义宏,并在使用场所引入适当的语法:
NSErrorDomain BSDomain = @"PRODUCT_BUNDLE_IDENTIFIER";

08-05 22:30