Swift 프로젝트에서 Objective-C CocoaPods를 사용하는 방법


84

Swift를 사용하여 Swift 프로젝트에서 Objective-C로 작성된 CocoaPod를 사용할 수있는 방법이 있습니까?

브리징 헤더 만 만드나요? 그렇다면 Swift의 CocoaPod에있는 라이브러리에 의해 정의 된 객체, 클래스 및 필드에 액세스 할 수 있습니까?

답변:


170

귀하의 질문에 대한 기본 대답은 예입니다. CocoaPods로 빌드 된 객관적인 C 코드를 사용할 수 있습니다.

더 중요한 질문은 "이러한 라이브러리를 사용하는 방법"입니다.
이 질문에 대한 답변에 따라 use_frameworks!당신의 깃발 Podfile:
하자 당신이 이름을 사용 오브젝티브 C 포드를 원하는 상상 CoolObjectiveCLib.

포드 파일이 use_frameworks!플래그를 사용하는 경우 :

// Podfile
use_frameworks!
pod 'CoolObjectiveCLib'

그러면 브리지 헤더 파일을 추가 할 필요가 없습니다.
필요한 것은 Swift 소스 파일에 프레임 워크를 가져 오는 것입니다.

// MyClass.swift
import CoolObjectiveCLib

이제 lib에있는 모든 클래스를 사용할 수 있습니다.

포드 파일이 use_frameworks!플래그를 사용하지 않는 경우 :

// Podfile
pod 'CoolObjectiveCLib'

그런 다음 브리징 헤더 파일을 만들고 필요한 모든 Objective-C 헤더를 가져와야합니다.

// MyApp-Bridging-Header
#import "CoolObjectiveCLib.h"

이제 가져온 헤더에 정의 된 모든 클래스를 사용할 수 있습니다.


pod .m 파일 내부에서 신속한 클래스에 액세스하는 방법 (이 포드를 사용자 정의하려는 경우)?
JAHelia

1
신속한 프로젝트의 podfile에서 use_frameworks의 주석을 제거했고 실제로는 Objective-c 카테고리 인 Toast pod를 사용하고 싶었습니다. 단순히 import UIView + Toast를 작성하면 컴파일 오류가 발생했습니다. 한 줄의 연속 문은 ';'로 구분해야합니다.
Chanchal 주권

@ChanchalRaj는 UIView+Toast포드의 이름입니까? 포드 이름과 일치하는 이름이 가져 오기 프레임 워크를 사용하지 않는 경우.
Vlad Papko

1
빠른 파일에 objc 코드를 사용하기 위해 동일한 코드를 사용했지만 그런 모듈 "POD NAME"오류가 발생하지 않습니다. 다른 플래그를 설정해야합니까
Prashant Tukadiya

4
use_frameworks 에 문제가있는 경우 ! , import 문이 올바른 형식으로 작성되지 않았기 때문일 수 있습니다. podFile 포함 예를 들어 경우 pod 'iOS-Echarts', 다음 수입은 다음과 같이 발생한다 스위프트 파일 : import iOS_Echarts 오브젝티브 C 파일 :#import <iOS_Echarts/iOS-Echarts.h>
Kushal 쇼크

2

podFile에서 use_frameworks! Pod종속성 의 폴더 구조에있는 Xcode 내 xxxxxxx-umbrella.h에서 지원 파일 을 추가 합니다.

당신에 {PROJECT_NAME}-Bridging-Header.h사용 :

#import "xxxxxxx/xxxxxxx-umbrella.h"

그것은 나를 위해 작동합니다.



0

그리고 Bridging Header 파일 이름을 Target-> Build Settings-> Objective-C Bridging Header에 추가하는 것을 잊지 마십시오.

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