Comment faire pour importer et utiliser Swift Pod Cadre en Objective-C Projet
J'ai essayé de la caisse CocoaPods nouveau cadre, le programme d'installation pour obtenir quelques Gousses d'aller et je vais avoir des soucis avec la Swift dans mon Objective-C projet.
Tout d'abord, c'est CocoaPods préliminaire de 0,35, vous pouvez lire sur la façon d'utiliser et d'installer ici.
Voici mon Podfile:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'MBProgressHUD'
pod 'SLPagingViewSwift'
MBProgressHUD est une commune de la filature de l'indicateur, et SLPagingViewSwift aléatoire projet que j'ai trouvé en tapant Swift dans le cocoapods de recherche. Voici la ViewController.m
Dans mon projet:
#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
Voici la SLPagingViewSwift
déclaration:
class SLPagingViewSwift: UIViewController, UIScrollViewDelegate {
Comme vous pouvez le voir, il hérite de UIViewController
, donc il ne devrait pas être un problème pour juste allouer et initialiser. Si j'ajoute le fichier séparément comme juste un fichier, le code ci-dessus fonctionne très bien. Je sais que ça fonctionne.
tl;dr
Comment puis-je utiliser un pur Swift Cadre créé par CocoaPods dans un pur Objective-C classe?
Dépannage
Plupart du temps, j'ai essayé divers produits d'importation. Apple recommande l' @import
style ici
Mais j'ai essayé plusieurs autres variétés:
//Compiler Error
#import <SLPagingViewSwift/SLPagingViewSwift.h>
//Builds Fine -- Doesn't Work
#import <SLPagingViewSwift/SLPagingViewSwift-Swift.h>
#import "SLPagingViewSwift-Swift.h"
J'ai aussi essayé quelques autres Swift bibliothèques de temps en temps pour voir si je pouvais faire quelque chose sur.
Je ne vois rien sur le Cocoapods questions qui peuvent aider à cela, je n'ai rien trouvé dans leur blog /libération des trucs.
Note
Si j'ajoute le SLPagingViewSwift.swift
fichier séparément pour le projet à l'ancienne, il fonctionne très bien.
- Ce que je comprends, vous pouvez toujours aller de Objc à Swift, mais pas toujours dans l'autre sens depuis Swift a la langue des fonctionnalités qui n'existent tout simplement pas dans Objc...
- Vous avez raison, à certains égards, mais avec ce type de classe, il ne devrait pas être un problème, car il hérite d'un ObjC classe. Aussi, si j'ajoute juste le fichier, mon extrait ci-dessus construit et fonctionne très bien. (voir mise à jour)
- Hey, votre question m'a beaucoup aidé, j'ai essayé d'ajouter FacebookSDK avec des gousses de cacao, et eu des erreurs lorsque vous essayez de compiler, "importer FacebookSDK" a fait le tour
- Cette question est en fait très utile: à l'aide de
@import
en Objective-C -- ce que beaucoup d'entre nous ont vu jamais, ou rarement, est nouveau, utile et nécessaire. Merci de comprendre cela.
Vous devez vous connecter pour publier un commentaire.
Je pense que vous devez déclarer la swift de la classe en tant que public, sinon il est considéré comme une classe interne et ne peut être vu dans le même module, et cela pourrait être la raison pour laquelle l'ajoutant dans le même projet que les fichiers de travail, mais comme un cadre qui ne fonctionne pas. Autre chose qui me vient à l'esprit est que le cadre peut-être besoin d'ajouter @objc devant la déclaration de la classe, de sorte qu'il peut être vu dans objective-c classes. Aussi la lecture de Apple guide de Mélanger et assortir entre objective-c et swift il est dit que lorsque vous importez un cadre externe, vous devez vous assurer que le Définit le Module de paramètre de construction pour le cadre que vous importez est définie sur Oui. Avez-vous vérifié avec l'une de ces options?