No se puede integrar ZXingObjC en un proyecto iOS Swift

Estoy trabajando en un proyecto de iOS, que muestra el número de cliente en un código de barras. Había instalado el framework ZXingObjC con CocoaPods, descrito en GitHub .

Puedo comstackr mi proyecto sin errores. También puedo usar las classs de ZXingObjC en mis classs de Objective-C, sin errores. Después de eso, agregué el Importar Comando #import <ZXingObjC/ZXingObjC.h> a mi file de cabecera de puente, como mis otras classs de objective-c personalizadas, sin errores de compilation. (He probado el file del encabezado destruyendo algunas declaraciones de import y obtengo la exception esperada del file no encontrado).

Pero ahora, no puedo usar ninguna class de ZXingObjC en mis classs rápidas. Solo obtuve el siguiente error de compilation: Use of undeclanetworking type '...' . El autocompletado Xcode tampoco funciona.

p.ej

 var test : ZXMultiFormatWriter? >> Use of undeclanetworking type 'ZXMultiFormatWriter' 

Lo intenté:

  • configurar nuevo proyecto, mismo problema
  • ruta de búsqueda de encabezado comprobado: $(SRCROOT)/Pods/Headers/Public/Adjust
  • reinstalado el marco ZXingObjC
  • Configuración de compilation comprobada: Enable Modules: YES
  • configuraciones de compilation comprobadas: Other Linker Flags: $(inherited) -ObjC -framework "ZXingObjC"
  • Binarios vinculados seleccionados en las fases de compilation: se agrega framework
  • statement de import comprobada en el file del encabezado de puente ( #import <ZXingObjC/ZXingObjC.h> y #import "ZXingObjC/ZXingObjC.h" – sin diferencia)
  • Estilo de Windows: reiniciar Xcode y Mac 😉

Estoy usando:

  • Xcode: 6.3.2
  • CocoaPods: 0.37.2
  • Objetivo de implementación del proyecto: iOS 8.0
  • SDK: 8.3

¿Alguien sabe el problema? ¿Alguien puede ayudar? ¿Cómo puedo hacer que el framework ZXingObjC esté disponible en swift?

En realidad es un problema fácil:

Podfile

 source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! pod 'ZXingObjC', '~> 3.1' 

Entonces, en la terminal:

 cd workspace pod install 

Luego, una vez abierto el proyecto en Xcode, debe editar el puente-encabezado agregando ZXingObj:

 #import <ZXingObjC/ZXingObjC.h> 

Finalmente, en sus classs rápidas que usan ZXingObjC, debe importar ZXingObjC.

 import ZXingObjC class ZXingObjCWrapper { func encode() { let writer = ZXMultiFormatWriter.writer() .... } } 

La ruta de búsqueda del encabezado no era correcta en mi proyecto. Los valores correctos son:

 $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/ZXingObjC" 

La segunda y tercera líneas no fueron agregadas por la installation con CocoaPods.

EDITAR: El marco instalado debe agregarse a "Binarios integrados" en la pestaña General del proyecto.

Intenté todo en esta página para agregar ZXingObjC como un Pod. Mi objective era generar un código de barras azteca.

Revisé mi ruta de búsqueda de encabezado. Como dijo Reddas, tuve que agregar manualmente "$ {PODS_ROOT} / Headers / Public / ZXingObjC". También agregué ZXingObjC como un Binario embedded (en la pestaña General).

Revisé mi file de puente y todo estaba bien. Revisé mis controlleres de vista donde quería generar el código de barras. La import ZXingObjC estaba allí.

No comstack errores. Pero no puedo declarar una variable de ZXingObjC.

Sin suerte. ¿Más sugerencias?

EDITAR : entré en los destinos, configuration de compilation y busqué las routes de búsqueda del encabezado. Agregué AMBAS "$ {PODS_ROOT} / Headers / Public / ZXingObjC" y "$ {PODS_ROOT} / Headers / Private / ZXingObjC"

Esto pareció destrozar lo que se rompió. Ahora funciona. Curiosamente, ahora puedo eliminar esas inputs y funciona.

El rest del código para cuando necesite configurar un UIImage con este código de barras:

 func generateDataMatrixQRCode(from string: String) -> UIImage? { do { let writer = ZXMultiFormatWriter() let hints = ZXEncodeHints() as ZXEncodeHints let result = try writer.encode(string, format: kBarcodeFormatDataMatrix, width: 1000, height: 1000, hints: hints) if let imageRef = ZXImage.init(matrix: result) { if let image = imageRef.cgimage { return UIImage.init(cgImage: image) } } } catch { print(error) } return nil }