2017-12-14 22 views
0

저는 기존 앱의 모델 레이어를 별도의 프레임 워크로 분할해야했습니다. 나는 기본 애플 리케이션으로 다시 가져올 포드를 만들기 위해 cocoapods를 사용하여 이것을 시도하고있다.Cocoapod 믹스 앤 매치 스위프트 및 Objective-c 코드

내가 가지고있는 문제는 코드를 나누는 앱이 스위프트와 목표 -c가 혼합 된 것입니다. Swift 코드는 Objective-c 코드를 사용하고 Objective-c 코드는 Swift 코드를 사용하도록 깔끔하게 분리되어 있지 않습니다.

나는 이것을 달성하는 방법을 이해하는 데 어려움을 겪고 있습니까? 프레임 워크에서 브리징 헤더와 생성 된 * -swift.h가 같은 방식으로 작동하지 않는 것 같습니다. 다음 포드는 위에 또 다른 합병증입니다.

여기 간단한 프로젝트를 실험 해 보았습니다. 스포일러 경고. 컴파일되지 않습니다. https://github.com/Megatron1000/TestMixAndMatch

동일한 얽힌 언어 방식으로 설정되었지만 수행 할 수 없었던 코코아 포드의 예를 찾으려고했습니다. 누구든지 내가 예제로 사용할 수있는 곳을 가리킬 수 있습니까?

답변

0

Obj-C 및 Swift 코드가 포함 된 (개인) 포드가 있습니다. podspec에서 나는 단순히 기술적 엑스 코드에서이 프로젝트가 프레임 워크이

s.source_files  = 'Project/*.{swift}', 
          'Project/legacy/*.{h,m}' 

처럼 그들을 추가했습니다.

Here 프로젝트에서 기술적 인 세부 사항을 조합하는 방법을 찾을 수 있습니다. 기술적으로 프레임 워크를 만들면 프레임 워크의 우산 헤더에 Obj-C 헤더를 포함해야합니다. Obj-C 클래스에서 Swift 메서드를 사용하려면

으로 포함해야합니다.
#import <ProductName/ProductModuleName-Swift.h> 

당신은 포드 내에 스위프트 코드가 목표 - C 코드를 사용합니다 않는이 설정을 통해 정기적으로 프로젝트

+0

에서 작업하는 경우 프레임 워크 또는 단순히

#import "ProductModuleName-Swift.h" 

를 구축하는 경우 포드 (pod) 내에서 그리고 Objective- C 코드는 Swift 코드를 사용합니까? 귀하의 응용 프로그램에서 스위프트 및 목표 -C로 작성된 창의 클래스에 액세스 할 수 있습니까? –

+0

늦게 답장을 드려 죄송합니다. 나는 대답을 업데이트했습니다 – Hons

+0

저는 아직도 이것으로 어려움을 겪고 있습니다. 포드 자체 내에서 Swift 코드 중 일부에 액세스하기 위해 Objective-C 클래스에서 * -Swift.h 파일을 가져 오려고합니다. 그 파일을 어떻게 가져올 지 모르겠습니다. 지금까지 파일이 생성되지 않는 것을 볼 수 있습니다. –

0

아마도이 경우 가장 좋은 방법은 프레임 워크 디자인을 간소화하고 객관적인 코드 정보를 신속하게 다시 작성하는 것입니다. 코드베이스가 이미 부분적으로 Swift에 있음을 언급하면 ​​전환을 더 쉽게 완료 할 수 있습니다.