Как PRODUCT_BUNDLE_IDENTIFIER можно использовать в качестве NSErrorDomain для ошибок приложения? - PullRequest
0 голосов
/ 21 мая 2019

Как можно использовать идентификатор пакета продукта приложения OS X для домена ошибки? Есть ли подводные камни в использовании его так?

Кажется, он не определен как макрос; Я попробовал:

NSErrorDomain BSDomain = PRODUCT_BUNDLE_IDENTIFIER;

Это приводит к ошибке:

Использование необъявленного идентификатора 'PRODUCT_BUNDLE_IDENTIFIER'

1 Ответ

0 голосов
/ 12 июня 2019

Кажется, переменные настройки сборки доступны в командной строке, но не в исходных файлах. Для любой такой переменной макрос препроцессора (см. Также "Добавить макрос препроцессора к цели в xcode 6" ) можно определить вручную на основе переменной . Макросу и настройке могут быть присвоены разные имена, но, скорее всего, присвоение им одного и того же имени будет более целесообразным.

В этом случае значение должно начинаться с «@» и быть заключено в экранированные двойные кавычки, поэтому они являются частью макроса и будут включены при его замене. Если любой из них не указан, значение макроса не будет допустимой константой NSString (требуется для использования в качестве значения NSErrorDomain). Макрос должен быть добавлен ко всем конфигурациям (отладка, выпуск и любые пользовательские).

PRODUCT_BUNDLE_IDENTIFIER=@\"$(PRODUCT_BUNDLE_IDENTIFIER)\"

Если идентификатор комплекта продукта также будет использоваться другими способами, макрос может быть определен с необработанным значением (PRODUCT_BUNDLE_IDENTIFIER=$(PRODUCT_BUNDLE_IDENTIFIER)) с соответствующим синтаксисом, введенным на сайтах использования:

NSErrorDomain BSDomain = @"PRODUCT_BUNDLE_IDENTIFIER";
...