Swift: использование приватных фреймворков
Я построил платформу iOS Swift с Xcode.
После написания кода я собрал проект и взял файл.framework в папке "Продукты", чтобы протестировать его.
Чтобы протестировать фреймворк, откройте новое приложение и перетащите ранее созданный файл.framework, и я добавил его в список встроенных двоичных файлов моего проекта приложения.
Чтобы импортировать его в мой класс ViewController.swift, я написал:
import frameworkName
Нет проблем, пока здесь, это означает, что проект видит рамки. Когда я пытаюсь использовать открытый класс внутри фреймворка с:
var x : className?
Я получаю следующую ошибку:
'className' is unavailable: cannot find Swift declaration for this class
Что это значит? В чем проблема?
3 ответа
Когда вы ссылаетесь на фреймворк в каталоге products из вашего рабочего пространства, убедитесь, что в качестве местоположения указано "Built Products", а имя файла - это просто имя фреймворка, без каких-либо дополнительных компонентов пути.
Если вы ссылаетесь на фреймворк, которого нет в вашей рабочей области, я бы порекомендовал использовать Carthage вместо того, чтобы копировать его прямо в ваш репозиторий. Это значительно упростит управление версиями и обеспечит правильную сборку для симулятора и устройства.
Чтобы создать самодостаточную структуру, вам действительно нужно многое сделать.
Во-первых, убедитесь, что ваша структура используется на правильном устройстве. Это значит, что фреймворк можно использовать только на соответствующем устройстве (симуляторе, устройстве и Mac). Другими словами, если фреймворк A построен на симуляторе, фреймворк импорта проекта A может пройти только компиляцию и успешно построен на симуляторе.
PS Если вам нужна универсальная версия, вам понадобится команда -lipo для дальнейшего изучения.
Во-вторых, во время реализации своей структуры убедитесь, что все классы, методы и переменные, которые вы хотите использовать за пределами, начинаются с Public
,
В-третьих, проверьте настройки проекта Embedded Binaries
а также linked Frameworks and Libraries
содержат ваши рамки.
Если вы создали толстый бинарный файл с помощью инструмента "lipo", не делайте этого.
Он отлично работает с отдельной рамкой.
Я должен найти другой бинарный комбайн, кроме липо