Как можно использовать PRODUCT_BUNDLE_IDENTIFIER в качестве NSErrorDomain для ошибок приложения?

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

Кажется, это не макрос; Я пытался:

NSErrorDomain BSDomain = PRODUCT_BUNDLE_IDENTIFIER;

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

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


person outis    schedule 21.05.2019    source источник


Ответы (1)


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

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

PRODUCT_BUNDLE_IDENTIFIER=@\"$(PRODUCT_BUNDLE_IDENTIFIER)\"

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

NSErrorDomain BSDomain = @"PRODUCT_BUNDLE_IDENTIFIER";
person outis    schedule 11.06.2019