objective c - tutorial - Cómo importar y usar Swift Pod Framework en Objective-C Project
npm install cocoapods (2)
Creo que debe declarar la clase swift como pública, de lo contrario, se trata como una clase interna y solo se puede ver dentro del mismo módulo, y esta podría ser la razón por la cual agregarla al mismo proyecto que los archivos funcionan, pero como un marco no lo hace. Otra cosa que se me ocurre es que el marco puede necesitar agregar @objc delante de la declaración de clase para que se pueda ver dentro de las clases de Objective-C. También leyendo la guía de Apple de here entre el objetivo c y rápido dice que cuando importa un marco externo, debe asegurarse de que la configuración de compilación del módulo Defines para el marco que está importando esté establecida en Sí. ¿Has consultado alguna de esas opciones?
He estado tratando de verificar la nueva configuración del marco de CocoaPods para poner en marcha algunos Pods y tengo problemas para usar Swift en mi proyecto Objective-C.
Lo primero es lo primero, esta es la versión preliminar de CocoaPods 0.35, puedes leer sobre cómo usarla e instalarla here .
Aquí está mi Podfile actual:
source ''https://github.com/CocoaPods/Specs.git''
platform :ios, ''8.0''
pod ''MBProgressHUD''
pod ''SLPagingViewSwift''
MBProgressHUD es un indicador giratorio común, y SLPagingViewSwift es un proyecto aleatorio que encontré escribiendo Swift en la búsqueda de cocoapods.
Aquí está el
ViewController.m
En mi proyecto:
#import "ViewController.h"
@import SLPagingViewSwift;
@import MBProgressHUD;
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// Works just fine
MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:hud];
[hud show:YES];
// Causes Error -- Won''t build
SLPagingViewSwift *sl = [[SLPagingViewSwift alloc] init];
}
@end
Aquí está la declaración
SLPagingViewSwift
:
class SLPagingViewSwift: UIViewController, UIScrollViewDelegate {
Como puede ver, hereda de
UIViewController
, por lo que no debería ser un problema solo asignarlo e inicializarlo.
Si agrego el archivo por separado como solo un archivo, el código anterior funciona bien.
Sé que funciona
tl; dr
¿Cómo puedo usar un Marco Swift puro creado por CocoaPods en una clase pura de Objective-C?
Solución de problemas
Principalmente he estado probando varias importaciones.
Apple recomienda el estilo
@import
here
Pero he estado probando muchas otras variedades:
// Compiler Error
#import <SLPagingViewSwift/SLPagingViewSwift.h>
// Builds Fine -- Doesn''t Work
#import <SLPagingViewSwift/SLPagingViewSwift-Swift.h>
#import "SLPagingViewSwift-Swift.h"
También he estado probando algunas otras bibliotecas de Swift de vez en cuando para ver si podía hacer clic.
No veo nada sobre los problemas de Cocoapods que pueda ayudar a esto, tampoco encontré nada en su blog / material de lanzamiento.
Nota
Si agrego el archivo
SLPagingViewSwift.swift
separado al proyecto a la antigua usanza, funciona bien.
Solo usamos el
@import SwiftModuleName;
Sintaxis, y asegúrese de que las funciones que desea usar sean públicas (y @objc)