Как изменить SWIFT_MODULE_NAME?

В названии говорится все. Я искал в настройках сборки SWIFT_MODULE_NAME, и ничего не получилось. Я также искал в Интернете, и есть ссылки на это имя, но нет информации о том, как он определяется. Кроме того, я не мог найти упоминания о SWIFT_MODULE_NAME в Apple Docs.

Я знаю это: он используется в настройке сборки "Objective-C Generated Interface Header Name" и может быть просмотрен двойным щелчком на значении настроек:

$(SWIFT_MODULE_NAME) -Swift.h

Он используется для преодоления разрыва между Objective-C и Swift и отображается только для проектов, включающих файлы Swift (вместе с Objective-C файлами, которые я предполагаю). Начиная с этой публикации, Xcode 7.3 является последним и самым большим.

Но где это значение определено и как его изменить?

Ответ 1

Имя модуля происходит из настройки сборки имени модуля продукта:

build settings screenshot

Значение SWIFT_MODULE_NAME по-видимому скрыто, но вы можете увидеть его вывод, посмотрев Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins/XCLanguageSupport.xcplugin/Contents/Resources/Swift.xcspec:

...
{
    Name = "SWIFT_MODULE_NAME";
    Type = String;
    DefaultValue = "$(PRODUCT_MODULE_NAME)";
    CommandLineArgs = (
        "-module-name",
        "$(value)",
    );
},
...

Ответ 2

Перейдите в раздел "Настройки" и нажмите + рядом с "Уровни". См.:

введите описание изображения здесь

замените NEW_SETTING как SWIFT_MODULE_NAME на имя параметра, и все, что является именем модуля для файла .h(без пробелов, пожалуйста) идет справа.

Ответ 3

Вы проверили этот документ: developer.apple.com/library/ios/documentation/Swift/Conceptual/...? обычно это название вашего продукта. Вы можете установить изменение значения в "Идентификатор пакета продукта" в настройках сборки. Обратите внимание: вы не можете переопределить имя продукта в Framework

Смотрите скриншот:

введите описание изображения здесь

Ответ 4

Build Settings содержит Product Module Name, который определяет, как будет выглядеть оператор import при использовании. Например, когда вы создаете Library или Framework.

По умолчанию он равен PRODUCT_NAME

Это значение можно изменить с помощью .modulemap с помощью Objective-C

enter image description here

Использование:

@import module_name; //Objective-C
import module_name //Swift

импорт и карта модулей