Cocoapods를 Swift 프로젝트와 통합하는 방법은 무엇입니까?


84

Apple 이 새로운 프로그래밍 언어 인 Swift를 소개 하면서이를 통해 사용할 수있는 기존 Objective-C 라이브러리와 어떻게 통합 할 수 있는지 궁금합니다. CocoaPods .


Swift 프로젝트로 CocoaPods를 설정하는 방법에 대한 최근 기사 를 읽을 수도 있습니다 .
Hemang

답변:


78

Cocoapods 0.36 이상 에서는 use_frameworks!Swift에서 Objective-C 포드를 가져 오는 데 브리징 헤더가 필요하지 않음을 의미하는 지침이 도입되었습니다 .

MBProgressHUDAlamofire 를 사용하는 전체 예제는 아래에서 확인하십시오 .

1. 포드 파일

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. 삭제

브리징 헤더에서 #imports를 제거하거나 필요하지 않은 경우 브리징 헤더 파일을 삭제합니다. 후자의 가능성을 선택하는 경우 Xcode 프로젝트 구성에서 경로 (이 삭제 된 브리징 헤더 파일)를 삭제하는 것을 잊지 마십시오.

3. 수입품 추가

이러한 클래스가 필요한 모든 Swift 파일을 추가 import MBProgressHUD및 / 또는 import Alamofire맨 위에 추가하십시오 .

4. 필요한 경우 열거 형 수정

이제 진정한 프레임 워크를 사용하고 있으므로 열거 형이 이동 중입니다! 다음과 같은 브리징 헤더로 괜찮은 Swift 라인이있을 수 있습니다.

progressHUD.mode = MBProgressHUDModeIndeterminate

이제 이렇게되어야합니다.

progressHUD.mode = MBProgressHUDMode.Indeterminate

큰 문제는 아니지만 많은 Objective-C 열거 형을 사용하는 경우보다 더 큰 문제가 있다는 오류 더미로 인해 길을 잃을 수 있습니다.

( 이 답변의 출처 )

정보 : use_frameworks가 작동하는지 확인하려면 직접 테스트해야합니다. Podfile의 지침은 iOS> = 8을 대상으로하는 Xcode 프로젝트와 만 호환됩니다.


73

이 프로세스는 Using Swift with Cocoa 및 Objective-C 문서 의 Mix and Match 섹션에 설명 된 것과 유사한 것 같습니다 .

  1. Podfile을 만들고 pod install.
  2. 새 Objective-C 헤더 파일 Example-Bridging-Header.h을 만들고 프로젝트에 추가합니다.
  3. 브리지 헤더에 import 문을 추가합니다 .
  4. 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 프로젝트 통합


3
나를 위해 import 문은 프로젝트 디렉토리, 일명 포함 할 필요 #import <Reachability/Reachability.h>보다는를 #import "Reachability.h".
Kyle Clegg

업데이트 일뿐입니다. Swift POD, 즉 : Swift Libs도 CocoaPods에서 곧 지원 될 것입니다. 다음 버전 0.36은 CocoaPods에서 완전한 Swift 지원을 가져올 것입니다. 기능의 대부분은 이미 완료되고 당신은 스위프트 포드 지금 내에서의 지시에 사용하는 테스트 - 구동 할 수 블로그 포스트
Sachin Palewar

2
Cocoapods 0.36 이상에서는 use_frameworks를 소개합니다! Swift에서 Objective-C 포드를 가져 오기 위해 브리징 헤더가 더 이상 필요하지 않음을 의미하는 지침 (아래 내 답변 참조).
King-Wizard

5
위의 내용 외에도 빌드 설정의 "사용자 헤더 검색 경로"에 "Pods / **"를 추가해야한다는 것을 알았습니다. 또한 브리지 파일에 "#import <Foundation / Foundation.h>"를 추가해야했습니다.
Swifty McSwifterton

1
Swifty 감사합니다. 나는 use_frameworks를 시도했다! 그러나 그것은 나를 위해 작동하지 않았습니다. 사용자 검색 경로에 "Pods / **"를 추가했습니다.
user3246173 2015

16

업데이트 : 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'

이것에 관한 블로그 게시물도 썼습니다 .


3
use_frameworks!iOS> = 8 전용입니다. 맞습니까? 그렇다면 답에 이것을 써야합니다.
confile apr

2

bridging-header.h에서 파일을 찾을 수 없음 오류가 발생하는 경우 Pod 라이브러리가 빌드 스키마에 연결되어 있는지 확인하는 것이 좋습니다.

CocoaPods 문제 해결 섹션에서는 여기 항목 # 4 에서 이를 수행하는 방법을 설명합니다.


1

이제 sudo gem install cocoapods신속한 프레임 워크 통합을 지원 하는 cocoapods 0.36.0 버전을 실행할 수 있습니다 . swift로 작성된 프레임 워크를 사용하는 경우 Podfile에서 명시 적으로 사용해야합니다.

platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'

0

제 경우에는 여기에 설명 된대로 주 대상에 pod를 추가하지 않고 Podfile의 Test 및 TestUI 대상에만 추가하는 것을 발견했습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.