Gdy Apple przedstawił Swift , ich nowy język programowania, zastanawiam się, jak można go zintegrować z istniejącymi bibliotekami Objective-C, które są dostępne za pośrednictwem CocoaPods ?
Odpowiedzi:
Cocoapods 0.36 i nowsze wprowadzają use_frameworks!
instrukcję, która sugeruje, że nagłówek mostkujący nie jest wymagany do importowania podów Objective-C w Swift.
Poniżej znajduje się pełny przykład użycia MBProgressHUD i 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
Usuń #imports z nagłówka mostkowania lub nawet usuń plik nagłówka mostkowania, jeśli go nie potrzebujesz. Jeśli wybierzesz drugą możliwość, nie zapomnij usunąć ścieżki (do tego usuniętego pliku nagłówka mostkowania) w konfiguracji projektu Xcode.
Dodaj import MBProgressHUD
i / lub import Alamofire
na górze każdego pliku Swift, który potrzebuje tych klas (-ów).
Używasz teraz prawdziwych frameworków, więc twoje wyliczenia ruszyły w locie! Możesz mieć linię języka Swift, która byłaby w porządku z nagłówkiem mostkującym w następujący sposób:
progressHUD.mode = MBProgressHUDModeIndeterminate
To teraz musi stać się tym:
progressHUD.mode = MBProgressHUDMode.Indeterminate
Nie jest to wielka sprawa, ale stos błędów może doprowadzić Cię na manowce, że masz większy problem niż w przypadku korzystania z wielu wyliczeń Objective-C.
Dla twojej informacji: Myślę (będziesz musiał sam przetestować, aby mieć pewność), że use_frameworks! Instrukcja w Twoim Podfile jest zgodna tylko z projektami Xcode dla iOS> = 8.
Wygląda na to, że proces jest podobny do tego opisanego w sekcji Mix and Match w dokumencie Using Swift with Cocoa and Objective-C .
pod install
.Example-Bridging-Header.h
i dodaj go do projektu.Objective-C Bridging Header
na swój cel:Teraz możesz użyć swojej biblioteki, w tym przypadku MKUnits, w pliku Swift:
let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
Więcej tutaj: Integracja Cocoapods z projektem Swift
#import <Reachability/Reachability.h>
raczej niż #import "Reachability.h"
.
AKTUALIZACJA : Wydano stabilną wersję CocoaPods 0.36. Oficjalnie obsługuje Swift.
CocoaPods obsługuje teraz Swift w najnowszej wersji 0.36. Nadal jest w wersji beta, ale działa.
Najpierw musisz zainstalować wersję beta CocoaPods (obecnie beta 2), uruchamiając ją w swoim terminalu.
sudo gem install cocoapods --pre
To prawie wszystko. Możesz dodawać biblioteki Swift tak, jak robisz to normalnie.
Ale jest haczyk, jeśli chcesz dodać bibliotekę napisaną w Objective-C do projektu Swift za pośrednictwem CocoaPods. Musisz dodać tę linię use_frameworks!
do swojego pliku Podfile. Oto przykład.
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
Napisałem również wpis na blogu dotyczący tego.
use_frameworks!
jest tylko dla iOS> = 8, prawda? Jeśli tak, powinieneś napisać to w swojej odpowiedzi.