Как импортировать сторонние фреймворки в Xcode Playground?

Как мне импортировать фреймворки 3-й части в Xcode Playground?

Swift Playground, очевидно, имеет механизм импорта структуры, потому что мы можем импортировать Cocoa, SpriteKitи в OSX Playground, XCPlayground (XCPlayground кажется, отсутствует в iOS, как ни странно)

То, что я действительно хотел бы сделать, это скрыть код от моей игровой площадки и быть в состоянии показать минимальный пример. Есть мысли о том, как загрузить Framework на игровую площадку Swift?

Смотрите также:

(Этот вопрос отличается, потому что просьба использовать каркас в Playground, а не просто обычный swift файлы)

6 ответов

Решение

Отредактировано: Начиная с Beta5, это теперь поддерживается, когда игровая площадка является частью рабочей области, которая строит структуру как цель. На сайте форумов Apple есть больше подробностей, но, надеюсь, @Rick Ballard добавит их к своему ответу здесь, и это должно стать окончательным ответом на этот вопрос.

Не делай ниже, больше!


В краткосрочной перспективе, хотя поддерживаемого решения не существует, если вы создаете Module/Framework, вы можете скопировать его в SDK System/Library/Frameworks каталог, а затем просто import <#Module#> так же, как вы импортируете систему Frameworks.

Для OS X Playground: /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks

И для iOS: /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/System/Library/Frameworks/

Но прежде чем сделать это... иди подать радар, как говорит @Rick в своем ответе.

В настоящее время не существует поддерживаемого способа импортировать ваш собственный фреймворк или код приложения в игровую площадку, за исключением вставки его в редактор игровой площадки. Мы знаем, что это очень желательный функционал, но, как всегда, мы призываем людей "голосовать с bugreporter" на bugreport.apple.com

Прямо сейчас, если вы просто пытаетесь скрыть код для показа в примере, свертывание кода в редакторе может помочь.

Теперь можно импортировать ваши собственные рамки на игровую площадку. Это позволяет обмениваться кодом между вашими приложениями и игровыми площадками, которые могут импортировать ваши фреймворки. Для этого ваша игровая площадка должна находиться в том же рабочем пространстве, что и проект, создающий вашу платформу. Вы, должно быть, уже построили свою структуру. Если это фреймворк iOS, он должен быть создан для 64-разрядного места назначения (например, iPhone 5s). У вас должна быть активная схема, которая строит хотя бы одну цель (местоположение сборки этой цели будет использоваться в поисковом пути платформы для игровой площадки). Ваше предпочтение "Построить местоположение" (в расширенных настройках "Местоположения") не должно быть установлено на "Legacy". Если ваш фреймворк не является фреймворком Swift, для параметра сборки "Defines Module" должно быть установлено значение "Да". После того, как все эти условия будут выполнены, импорт вашего каркаса будет работать на игровой площадке.

Я написал учебник по импорту пользовательских фреймворков в бета-версии 6

Короче говоря, если у вас есть игровая площадка и фреймворк либо в одном проекте, либо в рабочей области, а ваш фреймворк построен на 64 битах (даже для iOS), они очень хорошо играют вместе.

Источник: http://qiita.com/ryokosuge/items/2551cd4faa9dca324342

Если есть кто-то, кто все еще испытывает затруднения в понимании того, как это сделать после прочтения принятого ответа, это может помочь.

Это не на английском языке, поэтому я объясню здесь:

Используя Карфаген:

1: Настройте ваш Cartfile в корневой каталог проекта, добавьте свои библиотеки и запустите:

carthage update --platform iOS --use-submodules

2: убедитесь, что ваш проект сохранен как Workspace, Из строки меню Xcode: File > Save As Workspace, Выключите Xcode и откройте заново .xcworkspace файл.

3: добавьте свою библиотеку .xcodeproj файл в вашем рабочем пространстве: File > Add files to "your_workspace_name", Тогда найдите это в: ${SRCROOT}/Carthage/Checkouts/your_library_name/your_library_name.xcodeproj

4: Найти Embedded Binaries а также Linked Frameworks and Libraries раздел в общих настройках вашего проекта. Добавьте свою библиотеку .framework подать в оба.

5: Очистить (⇧+⌘+K) и построить (⌘ + B).

6: Импортируйте свою библиотеку на игровую площадку.

Я решил это, скопировав встроенные фреймворки в каталог Built Products, где игровые площадки в рабочей области также ищут фреймворки. Примечание: вам также нужно запустить lipo и удалить неиспользуемые архитектуры из двоичных файлов FAT.

Необходимые шаги (в двух словах):

  • Создать совокупную цель
  • Добавьте этап сценария для копирования структур из Carthage/Build/iOS/ в BUILT_PRODUCTS_DIR (в приведенном ниже примере я использую быстрый сценарий, но вы также можете использовать bash, ruby ​​python и т. Д.)
  • Запуск агрегатной цели Теперь вы можете импортировать каркас (ы) в игровую площадку

Кроме того, вы можете использовать совокупную цель в своем приложении:

  • Встраивать фреймворки из BUILT_PRODUCTS_DIR, а не из Карфагена / Build / iOS /
  • Добавьте совокупную цель в схему приложения, чтобы восстановить структуры после очистки.

Вот пример настройки проекта, как указано выше: https://github.com/richardnees/CarthagePlaygrounds

Как и при использовании классов Objective-C в коде Swift, вы можете импортировать сторонние библиотеки / классы в ваш проект, и Xcode спросит вас, хотите ли вы создать <#YourProjectName>-Bridging-Header заголовочный файл Выберите да и импортируйте все файлы заголовков, которые вам нужны в этом файле. После этого на своей игровой площадке вы можете просто сделать import <#YourProjectName>-Bridging-Header после import UIKit и вы сможете использовать классы, которые вы импортировали в свой проект.

Обновление: это на самом деле неверно. Пожалуйста, смотрите мой комментарий ниже. Извините за путаницу...

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