Alors qu'Apple a présenté Swift , son nouveau langage de programmation, je me demande comment vous pouvez l'intégrer aux bibliothèques Objective-C existantes disponibles via CocoaPods ?
Réponses:
Cocoapods 0.36 et supérieur introduit l' use_frameworks!
instruction qui implique que l'en-tête de pontage n'est pas nécessaire pour importer des pods Objective-C dans Swift.
Veuillez trouver ci-dessous un exemple complet utilisant MBProgressHUD et Alamofire :
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.3'
use_frameworks!
pod 'Alamofire', '>= 1.2.2' # Swift pod
pod 'MBProgressHUD', '>= 0.9.1' # Objective-C pod
Supprimez les #imports de votre en-tête de pontage ou même supprimez le fichier d'en-tête de pontage si vous n'en avez pas besoin. Si vous choisissez cette dernière possibilité, n'oubliez pas de supprimer le chemin (vers ce fichier d'en-tête de pont supprimé) dans la configuration de votre projet Xcode.
Ajoutez import MBProgressHUD
et / ou import Alamofire
en haut de tous les fichiers Swift qui ont besoin de ces classes.
Vous utilisez maintenant des frameworks de bonne foi, donc vos énumérations ont bougé en vol! Vous pourriez avoir une ligne de Swift qui convenait à l'en-tête de pont comme ceci:
progressHUD.mode = MBProgressHUDModeIndeterminate
Cela doit maintenant devenir ceci:
progressHUD.mode = MBProgressHUDMode.Indeterminate
Ce n'est pas un gros problème, mais la pile d'erreurs peut vous induire en erreur en pensant que vous avez un problème plus important que si vous utilisez beaucoup d'énumérations Objective-C.
Pour information: je suppose (vous devrez tester par vous-même pour être sûr) que le use_frameworks! l'instruction dans votre Podfile est uniquement compatible avec les projets Xcode ciblant iOS> = 8.
Il semble que le processus soit similaire à celui décrit dans la section Mix and Match de Utilisation de Swift avec Cocoa et Objective-C .
pod install
.Example-Bridging-Header.h
et ajoutez-le au projet.Objective-C Bridging Header
pour votre objectif:Vous pouvez maintenant utiliser votre bibliothèque, dans ce cas, MKUnits, dans votre fichier Swift:
let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
#import <Reachability/Reachability.h>
plutôt que #import "Reachability.h"
.
MISE À JOUR : La version stable de CocoaPods 0.36 a été publiée. Il prend officiellement en charge Swift.
CocoaPods prend désormais en charge Swift dans leur dernière version 0.36. C'est toujours en version bêta mais ça marche.
Vous devez d'abord installer la version bêta de CocoaPods (actuellement bêta 2) en l'exécutant dans votre terminal.
sudo gem install cocoapods --pre
C'est à peu près tout. Vous pouvez ajouter des bibliothèques Swift comme vous le feriez normalement.
Mais il y a un hic si vous voulez ajouter une bibliothèque écrite en Objective-C à un projet Swift via CocoaPods. Vous devez ajouter la ligne use_frameworks!
à votre Podfile. Voici un exemple.
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
J'ai également écrit un article de blog à ce sujet.
use_frameworks!
est seulement pour iOS> = 8 non? Si tel est le cas, vous devriez l'écrire dans votre réponse.
Vous pouvez maintenant utiliser la version 0.36.0 de cocoapods en exécutant sudo gem install cocoapods
qui prend en charge l'intégration des frameworks swift. Lorsque vous utilisez un framework écrit par swift, vous devez l'utiliser explicitement dans Podfile:
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'