teoria simple reutilizar reutilizacion propiedades programacion poo polimorfismo orientada objetos más metodo introduccion forma definicion código como codigos codigo ala ios xcode swift

ios - simple - ¿Cómo reutilizar el código Swift en otros proyectos?



propiedades de la programacion orientada a objetos (3)

Escribí una clase en Swift. Quiero usar este código en dos proyectos de aplicaciones iOS que escribí. Tanto el código compartido como las aplicaciones están escritas en Swift. ¿Cuál es la mejor manera de hacerlo?

Intenté crear tanto un marco como una biblioteca en Swift y luego agregarlo como un subproyecto a mi aplicación. En ambos casos no pude hacer que la aplicación vea el módulo. Intenté agregar el módulo compartido a "Dependencias de destino" y "Vincular binarios con bibliotecas" del destino de la aplicación principal. Sin suerte, la aplicación aún no puede ver las clases del módulo compartido.

Utilizando Xcode6 Beta6 en este momento.

Solución

Como lo señalaron Konstantin Koval y Heliem, todo lo que necesitaba era usar el public en mis declaraciones de clase y método, en el módulo compartido. Ahora todo funciona, tanto si uso el espacio de trabajo como si agrego el módulo como un subproyecto.

Actualizar

Acabo de encontrar una excelente solución fácil para reutilizar el código entre proyectos en Swift. Se llama Cartago ( https://github.com/Carthage/Carthage ). Esto no es un complemento ya que no estoy afiliado a él de ninguna manera, simplemente me gusta. Funciona en iOS 8+.


  1. Cree un nuevo proyecto (iOS Cocoa Touch Framework) para su código reutilizable
  2. Mueve tus clases a ese proyecto de Framework
  3. Marque sus métodos y clases, que deberían ser visibles para otros como public

  4. Crear espacio de trabajo.
    Puede crear un espacio de trabajo en el paso 1. Cuando cree un nuevo proyecto de Framework, Xcode le preguntará si desea crear un nuevo espacio de trabajo y agregar ese proyecto al espacio de trabajo. Este es el mejor enfoque.

  5. Agrega tanto tu proyecto como tu Framework al área de trabajo
  6. Seleccione su proyecto de destino -> pestaña General. Agrega Framework y Bibliotecas (agrega tu biblioteca aquí)
  7. Cuando desee utilizar el código de su biblioteca en el archivo swift, impórtelo, import ''LibTargetName''

Aquí hay un video que es muy sencillo: http://eonil-observatory.tumblr.com/post/117205738262/a-proper-way-to-add-a-subproject-to-another-xcode

El video es para OS X en lugar de iOS. Pero lo obtendrás y descubrirás el proceso para iOS.

Supongamos que AppA necesita reutilizar el código de SharedProject .

El siguiente proceso me funciona en Xcode 7 Beta:

  1. Crear SharedProject . El tipo de proyecto debe ser Framework lugar de Application . Escribe código común en este proyecto y marca el código como public .
  2. Abra AppA en Xcode, abra la carpeta que contiene SharedProject en Finder. Arrastre el archivo .xcodeproj de SharedProject desde Finder y suéltelo en la carpeta raíz de AppA en Xcode Project Navigator.
  3. AppA -> Build Phases -> Link Binary with Libraries . Añadir SharedProject .
  4. import SharedProject y reutilizar el código de SharedProject !

Editar:

Hoy en día te sugiero que uses https://github.com/Carthage/Carthage . Es mejor que la solución casera de arriba.


Puede tomar un enfoque más programático utilizando SWM (Swift Modules): https://github.com/jankuca/swm

Es muy similar a npm (node.js package manager) o bower (administrador de módulos del lado del cliente); declara sus dependencias en un archivo swiftmodule.json como se muestra a continuación. No tiene un registro de módulo central como las dos soluciones JS mencionadas, solo acepta URL de git.

{ "name": "ProjectName", "dependencies": { "Dependency": "git://github.com/…/….git" } }

... ejecute swm install y tenga el módulo de Dependency (compilado en un binario *.swiftmodule ) listo para importar en el directorio .modules/ .

import Dependency

Y si prefiere omitir Xcode para el desarrollo de aplicaciones, también puede crear su aplicación completa utilizando swm build (más información en el archivo Léame del proyecto).

El proyecto aún está en sus primeras etapas, pero al menos me resulta muy útil. Proporciona la forma más limpia (y clara) de crear módulos importables.