web-dev-qa-db-fra.com

Comment utiliser Objective-C CocoaPods dans un Swift Project

Est-il possible d'utiliser un CocoaPod écrit en Objective-C dans mon Swift projet en utilisant swift?

Est-ce que je fais juste un en-tête de pontage? Et si oui, puis-je accéder aux objets, aux classes et aux champs définis par les bibliothèques du CocoaPod dans Swift?

79
shaydawg

La réponse de base à votre question est Oui, vous pouvez utiliser le code objective-c construit avec CocoaPods.

La question la plus importante est "Comment utiliser de telles bibliothèques?"
La réponse à cette question dépend de use_frameworks! drapeau dans votre Podfile:
Imaginons que vous souhaitiez utiliser le module Objective-C portant le nom CoolObjectiveCLib.

Si votre fichier pod utilise use_frameworks! drapeau:

// Podfile
use_frameworks!
pod 'CoolObjectiveCLib'

Ensuite, vous n'avez pas besoin d'ajouter de fichiers d'en-tête de pont.
Tout ce dont vous avez besoin est un cadre d’importation dans Swift:

// MyClass.Swift
import CoolObjectiveCLib

Vous pouvez maintenant utiliser toutes les classes présentées dans lib.

Si votre fichier pod n'utilise pas use_frameworks! drapeau:

// Podfile
pod 'CoolObjectiveCLib'

Ensuite, vous devez créer un fichier d’en-tête de pontage et y importer tous les en-têtes Objective-C nécessaires:

// MyApp-Bridging-Header
#import "CoolObjectiveCLib.h"

Vous pouvez maintenant utiliser toutes les classes définies dans les en-têtes importés.

161
Vlad Papko

Dans podFile, utilisez le drapeau use_frameworks! Dans Xcode, dans la structure de dossiers Pod de la dépendance, vous ajoutez xxxxxxx-umbrella.h dans fichiers de support.

Dans votre {PROJECT_NAME}-Bridging-Header.h utilisation:

#import "xxxxxxx/xxxxxxx-umbrella.h"

Ça marche pour moi.

2
RodolfoNeto

ET n'oubliez pas d'ajouter le nom du fichier en-tête de pontage dans Cible -> Paramètres de construction -> En-tête de pontage Objective-C

0
o0sea0o

Vous avez juste besoin d'un en-tête de pontage et importez ce dont vous avez besoin.

0
Lucian Boboc