Apple 이 새로운 프로그래밍 언어 인 Swift를 소개 하면서이를 통해 사용할 수있는 기존 Objective-C 라이브러리와 어떻게 통합 할 수 있는지 궁금합니다. CocoaPods .
답변:
Cocoapods 0.36 이상 에서는 use_frameworks!
Swift에서 Objective-C 포드를 가져 오는 데 브리징 헤더가 필요하지 않음을 의미하는 지침이 도입되었습니다 .
MBProgressHUD 및 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
브리징 헤더에서 #imports를 제거하거나 필요하지 않은 경우 브리징 헤더 파일을 삭제합니다. 후자의 가능성을 선택하는 경우 Xcode 프로젝트 구성에서 경로 (이 삭제 된 브리징 헤더 파일)를 삭제하는 것을 잊지 마십시오.
이러한 클래스가 필요한 모든 Swift 파일을 추가 import MBProgressHUD
및 / 또는 import Alamofire
맨 위에 추가하십시오 .
이제 진정한 프레임 워크를 사용하고 있으므로 열거 형이 이동 중입니다! 다음과 같은 브리징 헤더로 괜찮은 Swift 라인이있을 수 있습니다.
progressHUD.mode = MBProgressHUDModeIndeterminate
이제 이렇게되어야합니다.
progressHUD.mode = MBProgressHUDMode.Indeterminate
큰 문제는 아니지만 많은 Objective-C 열거 형을 사용하는 경우보다 더 큰 문제가 있다는 오류 더미로 인해 길을 잃을 수 있습니다.
( 이 답변의 출처 )
정보 : use_frameworks가 작동하는지 확인하려면 직접 테스트해야합니다. Podfile의 지침은 iOS> = 8을 대상으로하는 Xcode 프로젝트와 만 호환됩니다.
이 프로세스는 Using Swift with Cocoa 및 Objective-C 문서 의 Mix and Match 섹션에 설명 된 것과 유사한 것 같습니다 .
pod install
.Example-Bridging-Header.h
을 만들고 프로젝트에 추가합니다.Objective-C Bridging Header
목표 설정 :이제 Swift 파일에서 라이브러리 (이 경우 MKUnits)를 사용할 수 있습니다.
let kilograms = NSNumber.mass_kilogram(2)()
let pounds = NSNumber.mass_pound(10)()
let result = kilograms.add(pounds)
println(result)
더보기 : Cocoapods와 Swift 프로젝트 통합
#import <Reachability/Reachability.h>
보다는를 #import "Reachability.h"
.
업데이트 : CocoaPods 0.36 안정 버전이 출시되었습니다. 공식적으로 Swift를 지원합니다.
CocoaPods는 이제 최신 0.36 릴리스에서 Swift를 지원합니다. 아직 베타 버전이지만 작동합니다.
먼저 터미널에서 실행하여 CocoaPods 베타 (현재 베타 2)를 설치해야합니다.
sudo gem install cocoapods --pre
그게 다야. 평소처럼 Swift 라이브러리를 추가 할 수 있습니다.
그러나 CocoaPods를 통해 Objective-C로 작성된 라이브러리를 Swift 프로젝트에 추가하려는 경우 문제가 있습니다. use_frameworks!
Podfile에 줄을 추가해야합니다 . 여기에 예가 있습니다.
use_frameworks!
platform :ios, '8.0'
pod 'MagicalRecord'
이것에 관한 블로그 게시물도 썼습니다 .
use_frameworks!
iOS> = 8 전용입니다. 맞습니까? 그렇다면 답에 이것을 써야합니다.