xcode - programming - Zona de juegos de importación: No hay tal módulo ''Foo''
the swift programming language pdf (6)
He seguido diligentemente las instrucciones de Apple para importar un módulo personalizado a un área de juegos, incluidas las instrucciones here . Y sin embargo me sale:
La ejecución del patio de juegos falló: /var/folders/z3/kd0nj4ln1rgcpm8bdz7067wh0000gs/T/./lldb/1874/playground1.swift:7:8: error: no existe tal módulo ''Foo'' importación Foo
¿Cómo puedo recuperar una importación de Playground en funcionamiento? [Editar: Tenga en cuenta que dos respuestas han producido instrucciones detalladas para asociar un área de juegos con un marco; He seguido esas instrucciones pero no he tenido suerte. La solución deberá involucrar la reconfiguración de algo en Xcode; mi instalación está aparentemente rota ]
Imágenes detalladas del error e intentos:
Aquí hay otro intento, basado en la respuesta de @EricD, que muestra la estructura del directorio, no los dados.
Crea un espacio de trabajo de la siguiente manera:
- Elija Archivo> Nuevo> Área de trabajo
- Ingrese el nombre del área de trabajo y especifique su ubicación en su sistema de archivos
- Clic en Guardar
Ahora, crea un framework Cocoa con un archivo swift que tenga tu clase
- Crea archivos swift en tu framework
- En Xcode, haga clic con el botón derecho en la carpeta donde desea agregar el archivo swift y seleccione el nuevo archivo ...
- Seleccione swift> Siguiente> Nombre su archivo> Crear
- Seleccione su marco en Xcode -> Construya su marco
- Crear área de juegos -> Área de juegos también debe ser parte de su área de trabajo, si no la arrastra a su área de trabajo, se agregará automáticamente.
- Haga clic derecho en la sección de archivos de Xcode> Nuevo archivo ...> Patio de juegos
- importar
- Llama a tu metodo
Nota: si solo desea agregar clases en lugar de un marco a su área de juegos, consulte el enlace ¿Cómo importar mi propia clase a una zona de juegos de Xcode 7?
Así es como procedo para OS X con Xcode 7.1:
Crear nuevo proyecto: OS X Cocoa Framework, Swift. Para este ejemplo lo nombré "TestPlaygroundFMK".
Crea un nuevo archivo Swift.
Agrega una clase al archivo. El código tiene que ser público. Hice esto para nuestro ejemplo:
import Foundation
public class Talk {
public class func sayHello() {
print("Hello from framework!")
}
}
Construye el proyecto ahora.
En la barra de menú, haga clic en Archivo> Guardar como área de trabajo.
Cree un nuevo Playground y guárdelo dentro de la carpeta del proyecto al lado de los archivos Swift.
El Patio de Juegos no debe tener el mismo nombre que el proyecto.
Construye el proyecto de nuevo.
Importe su marco en el Patio de Juegos y utilícelo:
import TestPlaygroundFMK
Talk.sayHello()
Mi patio de recreo funcionaba bien, pero descubrí que cuando salía de Xcode y lo volvía a abrir, recibía un error como este:
error: /var/folders/ft/bmk8wh6s5ms4my2pxhn3qbp40000gn/T/playground1-9216e0..swift:3:8: error: no existe tal módulo ''Playground_Sources'' import Import Playground_Sources
... donde "Patio de juegos" es el nombre de mi archivo de juegos.
La solución a esto (en Xcode 9.0) es:
- haga clic en cualquier archivo de juegos en su área de trabajo
- Mostrar el panel de Utilidades (
opt
-cmd
-0
) - Debajo de "Configuración del área de juegos", cambie la "Plataforma" a cualquier otra cosa y luego vuelva a establecerla.
En mi caso, está configurado para macOS
. Lo cambié a iOS
luego volví a macOS
(no es necesario volver a compilarlo) y empezó a funcionar bien ... hasta que cierre Xcode y lo abra de nuevo.
Esta es la única solución que encontré para trabajar con macOS playgrounds . Este error todavía existe en Xcode 9.3.
No creo que sea exagerado decir que Xcode es algo así como una caja negra. No pretendo que esto funcione para nadie más, pero para mí, después de tener el mismo problema después de crear un nuevo campo de juego y un nuevo objetivo de marco, y todas las otras soluciones propuestas, lo que finalmente funcionó fue eliminar el archivo del área de trabajo y (en Mi caso) Regenerándolo con cocoápodos.
No tengo idea de por qué funcionó esto.
Para algunos de los que ninguna de las soluciones anteriores funciona (y que la configuración de la ruta de compilación de Xcode ya estaba establecida en Unique
), he encontrado una solución.
El marco debe estar construido con un esquema para un dispositivo simulador de iOS (cualquiera en la lista) y NO un Generic iOS Device
, ya que Playgrounds no lo admite. Este me funcionó:
La solución , de Soporte de Apple, fue ajustar mis Preferencias de Xcode. En Locations :: Advanced mi configuración era ''Legacy''. Al cambiar a ''Único'' y deshacer las rutas que intenté insertar, Playgrounds ahora puede importar marcos.