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", не делайте этого.

Он отлично работает с отдельной рамкой.

Я должен найти другой бинарный комбайн, кроме липо

Другие вопросы по тегам