Comme Apple introduit Swift , leur nouveau langage de programmation, je me demande comment vous pouvez l'intégrer aux bibliothèques Objective-C existantes disponibles via CocoaPods =?
Il semble que le processus soit similaire à celui décrit dans la section Mélanger et assortir de tilisation de Swift avec Cocoa et Objective-C documentation.
pod install
.Example-Bridging-Header.h
, et l'ajouter au projet.Objective-C Bridging Header
pour votre cible: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)
Plus ici: Intégration de Cocoapods avec un Swift
Cocoapods 0.36 et plus introduit le use_frameworks!
instruction qui implique que l’en-tête de pontage n’est pas requis pour importer des modules 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 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 pontage supprimé) dans la configuration de votre projet Xcode.
Ajouter import MBProgressHUD
et/ou import Alamofire
en haut de chaque fichier Swift qui a besoin de ces classes).
Vous utilisez maintenant des frameworks authentiques, alors vos enums ont bien bougé! Vous pourriez avoir une ligne de Swift) avec l’en-tête de pontage comme ceci:
progressHUD.mode = MBProgressHUDModeIndeterminate
Cela doit maintenant devenir ceci:
progressHUD.mode = MBProgressHUDMode.Indeterminate
Ce n'est pas grave, mais le tas d'erreurs peut vous amener à croire que vous avez un problème plus grave que celui que vous utilisez si vous utilisez beaucoup d'énums Objective-C.
Pour votre information: je suppose (vous devrez tester vous-même pour être sûr) que use_frameworks! Les instructions de votre fichier Podfile sont uniquement compatibles avec les projets Xcode ciblant iOS> = 8.
[~ # ~] mise à jour [~ # ~] : la version stable de CocoaPods 0.36 a été publiée. Il soutient officiellement Swift.
CocoaPods prend désormais en charge Swift dans leur dernière version 0.36. Il est toujours en version bêta mais cela fonctionne.
Tout d'abord, vous devez installer la version bêta de CocoaPods (actuellement la version bêta 2) en l'exécutant sur votre terminal.
Sudo gem install cocoapods --pre
C'est à peu près tout. Vous pouvez ajouter les bibliothèques Swift comme vous le feriez normalement.
Mais il y a un inconvénient si vous souhaitez ajouter une bibliothèque écrite en Objective-C à un projet Swift via CocoaPods. Vous devez ajouter la ligne use_frameworks!
À votre fichier podfile. Voici un exemple.
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
J'ai écrit un blog post à ce sujet également.
Si vous obtenez une erreur de fichier introuvable dans votre fichier bridging-header.h, vous pouvez être sûr que votre bibliothèque de pods est liée dans votre schéma de construction.
La section Dépannage de CocoaPods explique comment procéder sous l’article 4 ici
Maintenant, vous pouvez utiliser la version 0.30.0 de cocoapods en exécutant Sudo gem install cocoapods
qui supporte 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'
Dans mon cas, j’ai constaté que je n’ajoutais pas de pods à la cible principale mais uniquement aux cibles Test et TestUI dans Podfile, comme expliqué ici .