Встраивание содержания с Swift в Objective C
Q: Как я встраиваю содержание с Swift в приложении Objective C?
A: Библиотеки стандарта Swift копируются в пакет, если и только если Вы создаете приложение, и это приложение содержит исходные файлы Swift отдельно. Можно проверить, включает ли продукт, такой как платформа исходные файлы Swift путем выполнения otool -L на его исполнимой программе в Терминале. Эта команда выводит на экран все совместно используемые библиотеки и платформы, против которых динамично соединяется Ваш продукт. Если какая-либо из библиотек Swift появляется среди результата, Ваш продукт использует Swift otool -L как показано на рисунке 1.


Если Вы создадите приложение, не использующее Swift, но встраивающее содержание, такое как платформа, делающая, то XCode не будет включать эти библиотеки в Ваше приложение. В результате Ваше приложение откажет после запуска с сообщением об ошибке, смотрящим следующим образом:
dyld: Library not loaded: @rpath/libswiftCoreGraphics.dylib |
Referenced from: /private/var/mobile/Containers/Bundle/Application/696F0EAD-E2A6-4C83-876F-07E3D015D167/<Your_App>.app/Frameworks/<Framework_Name>.framework/<Framework_Name> |
Reason: image not found |
где <Your_App> и <Framework_Name> являются соответственно Вашим приложением и платформой, встраиваемой в Ваше приложение.
К обходному решению эта проблема, набор Embedded Content Contains Swift Code (EMBEDDED_CONTENT_CONTAINS_SWIFT) установка сборки в YES в Вашем приложении как показано на рисунке 2. Эта установка сборки, указывающая, встроил ли продукт цели содержание с Кодом SWIFT, говорит XCode встраивать библиотеки стандарта Swift в Ваше приложение, когда установлено в YES.


История версии документа
| Дата | Примечания |
|---|---|
| 07.10.2014 | Новый документ, описывающий, как встроить содержание с Swift в приложении Objective C. |