web-dev-qa-db-fra.com

Comment intégrer Cocoapods avec un projet Swift?

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 =?

84
Michal K.

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.

  1. Créez votre Podfile et lancez pod install.
  2. Créez un nouveau fichier d'en-tête Objective-C, Example-Bridging-Header.h, et l'ajouter au projet.
  3. Ajoutez une instruction d'importation à l'en-tête de pont .
  4. Ensemble Objective-C Bridging Header pour votre cible:

enter image description here

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

72
Michal K.

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 :

1. Podfile

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

2. suppression

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.

3. Ajouter des importations

Ajouter import MBProgressHUD et/ou import Alamofire en haut de chaque fichier Swift qui a besoin de ces classes).

4. Fixez les enums si nécessaire

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.

( Source de cette réponse )

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.

78
King-Wizard

[~ # ~] 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.

16
Isuru

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

2
Michelle

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'
1
Allen

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 .

0
zeeawan