¿Cómo importo frameworks de terceros en Xcode Playground?

¿Cómo importo marcos de 3ra parte en Xcode Playground?

Swift Playground obviamente tiene un mecanismo de importación de framework porque podemos importar Cocoa , SpriteKit , y en un OSX Playground, XCPlayground ( XCPlayground parece que falta en iOS, extrañamente)

Lo que realmente me gustaría hacer es ocultar el código de mi patio de recreo y ser capaz de mostrar un ejemplo mínimo. ¿Alguna idea sobre cómo cargar un Framework en Swift playground?

Ver también:

  • Cómo importar sus propias clases desde su propio proyecto a un patio de recreo
  • ¿Es posible importar código Objective-C de terceros en un patio Swift?

(Esta pregunta es diferente porque la solicitud es utilizar un marco en el patio de recreo en lugar de simples archivos swift )

Editado: a partir de Beta5, ahora se admite cuando el patio de recreo forma parte del espacio de trabajo que crea el marco como objective. Hay más detalles en el sitio de los foros de desarrollo de Apple, pero esperamos que @Rick Ballard los agregue a su respuesta aquí y esa debería ser la respuesta definitiva para esta pregunta.

¡No hagas más abajo!


A corto plazo, si bien no hay una solución compatible, si está produciendo un Módulo / Framework, puede copiarlo en el directorio System/Library/Frameworks del SDK y luego import < #Module#> la misma forma que importa el sistema Frameworks .

Para un área de juegos OS X: /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks

Y para iOS: /Applications/Xcode6-Beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/System/Library/Frameworks/

Pero antes de hacer eso … ve a archivar un radar como dice @Rick en su respuesta.

Actualmente no hay una forma admitida de importar su propio código de marco o aplicación en un patio de recreo, excepto pegarlo en el editor de patio de recreo. Somos conscientes de que esta es una funcionalidad muy deseable, pero como siempre, alentamos a las personas a “votar con bugreporter” en bugreport.apple.com

En este momento, si solo está tratando de ocultar el código para mostrar en un ejemplo, el plegado del código en el editor podría hacer el truco.

Ahora es posible importar sus propios marcos en un patio de juegos. Esto proporciona una forma de compartir el código entre sus aplicaciones y juegos, que pueden importar sus marcos. Para hacer esto, su patio de recreo debe estar en el mismo espacio de trabajo que el proyecto que produce su marco. Usted ya debe haber construido su marco. Si se trata de un marco de iOS, debe estar construido para un destino de ejecución de 64 bits (por ejemplo, iPhone 5s). Debe tener un esquema activo que genere al menos un objective (la ubicación de comstackción de ese objective se usará en la ruta de búsqueda del marco para el patio de recreo). Su preferencia de “Ubicación de comstackción” (en la configuración avanzada de “Ubicaciones”) no se debe establecer en “Legado”. Si su marco no es un marco Swift, la configuración de comstackción “Define el módulo” debe establecerse en “Sí”. Una vez que se cumplan todas estas condiciones, la importación de su marco funcionará en un patio de juegos.

He escrito un tutorial que cubre la importación de marcos personalizados en Beta 6

En resumen, si tiene su patio de recreo y su marco ya sea en el mismo proyecto o espacio de trabajo, y su marco está construido para 64 bits (incluso para iOS), juegan muy bien juntos.

fuente: http://qiita.com/ryokosuge/items/2551cd4faa9dca324342

Si hay alguien que todavía tiene dificultades para entender cómo hacerlo después de leer la respuesta aceptada, esto puede ayudar.

Aunque no está en inglés, lo explicaré aquí:

Usando Cartago:

1: Configure su Cartfile en la raíz del proyecto, agregue sus bibliotecas y ejecute:

carthage update --platform iOS --use-submodules

2: asegúrese de que su proyecto esté guardado como un Workspace . Desde la barra de menú de Xcode: File > Save As Workspace . Cierre Xcode y vuelva a abrir desde el nuevo archivo .xcworkspace .

3: Agregue el archivo .xcodeproj su biblioteca en su área de trabajo: File > Add files to "your_workspace_name" . A continuación, encuéntrelo en: ${SRCROOT}/Carthage/Checkouts/your_library_name/your_library_name.xcodeproj

4: Encuentre la sección Embedded Binaries y Linked Frameworks and Libraries en la configuración general de su proyecto. Agregue el archivo .framework su biblioteca a ambos.

5: Limpiar (⇧ + ⌘ + K) y construir (⌘ + B).

6: Importe su biblioteca en el patio de recreo.

Lo resolví copiando los frameworks construidos al Directorio de Productos Construidos, donde Playgrounds en el área de trabajo también busca frameworks. Nota: también necesita ejecutar lipo y eliminar las architectures no utilizadas de los binarios FAT.

Los pasos necesarios (en pocas palabras):

  • Crear un objective agregado
  • Agregue una fase de script para copiar los marcos de Carthage / Build / iOS / a BUILT_PRODUCTS_DIR (utilizo un script rápido en el ejemplo a continuación, pero también puede usar bash, ruby ​​python, etc.)
  • Ejecutar objective agregado Ahora puede importar el marco (s) en un Patio de recreo

Además, puede aprovechar el objective agregado en su aplicación:

  • Incrustar frameworks de BUILT_PRODUCTS_DIR, no de Carthage / Build / iOS /
  • Agregue un objective agregado al esquema de la aplicación para restablecer los marcos después de una limpieza.

Aquí hay una configuración de proyecto de ejemplo como la anterior: https://github.com/richardnees/CarthagePlaygrounds

Al igual que con las clases Objective-C en Swift code, puedes importar biblioteca / clases de terceros a tu proyecto y Xcode te preguntará si quieres crear un < #YourProjectName>-Bridging-Header header file. Elija Sí e importar todos los archivos de encabezado que necesite en ese archivo. Después de eso, en su patio de recreo, simplemente puede import < #YourProjectName>-Bridging-Header después de import UIKit y podrá usar las clases que importó a su proyecto.

Actualización: esto es realmente incorrecto. Por favor, mira mi comentario a continuación. Perdón por cualquier confusión …