여러 대상이있는 Objective C to Swift 헤더 파일
import 문을 통해 Objective C (대상 'MyApp'용)에서 Swift 클래스를 성공적으로 호출하고 있습니다.
#import "MyApp-Swift.h"
이제 "MyAppLite"라는 새 대상을 만들었습니다.
새 타겟을 컴파일 할 때 코드에 "MyApp-Swift.h"가 필요하지만 컴파일러가 "MyAppLite-Swift.h"를 생성하기 때문에 오류가 발생합니다.
따라서 #import
컴파일하는 대상에 대한 조건부 Swift / ObjC 헤더를 만들어야합니다 .
이 작업을 어떻게 수행 할 수 있습니까? 아니면 더 나은 방법이 있습니까?
설정할 수도 있습니다 Product Module Name
에 설정 Build Settings
(I가로 설정하여 모듈에서 동일하기를 $(PROJECT_NAME)
너무 것을) <project>-Swift.h
생성되는 파일이 모든 모듈에서 같은 이름이 있습니다. 이렇게하면 전 처리기 매크로를 추가 / 확인할 필요가 없습니다.
이 문제를 해결하기 위해 찾은 가장 좋은 방법은 Xcode 공유 프로젝트 설정입니다. 다음 설정을 검색 할 수 있습니다.
Objective-C 생성 인터페이스 헤더 이름 *
해당 값을 "MyProject-Swift.h"와 같은 공통 헤더 이름으로 설정하면 각 대상에 적용되며 Objective-C 파일에서 가져 오기 선언을 안전하게 사용할 수 있습니다. 이렇게하면 필요한 경우 각 대상에 대해 고유 한 제품 모듈 이름을 계속 사용할 수 있습니다.
저는 이것을 Xcode 버전 6.4 (6E35b)에서 테스트했습니다.
* 참고 : 이는 Swift 컴파일러 설정 아래에 표시되며 프로젝트에 Swift 소스 파일을 추가 한 경우에만 표시됩니다. 또한 대상에 연결된 Swift 소스가없는 경우 해당 대상의 빌드 설정에 대해 Swift 컴파일러 옵션이 표시되지 않습니다.
행운을 빕니다!
이전 답변은 대상 또는 프로젝트의 이름을 바꾸거나 SWIFT_MODULE_NAME
의도 한대로 사용하기 로 결정한 경우 몇 가지 문제가 있습니다 .
가장 보편적 인 솔루션은 SWIFT_OBJC_INTERFACE_HEADER_NAME
프로젝트의 대상이 아닌 빌드 설정 아래에서 ( "Objective-C 생성 인터페이스 헤더 이름")을 다음과 같이 변경하는 것입니다.
$(PROJECT_NAME)-Swift.h
-프로젝트 당 1 개$(SWIFT_MODULE_NAME)-Swift.h
— 모듈 당 하나씩 (기본값).
제가 고칠 수있는 유일한 방법은 ...
#ifdef IS_LITE
#import "MyApp_Lite-Swift.h"
#else
#import "MyApp-Swift.h"
#endif
내 제품 모듈 이름에 '잘못된'문자가있는 경우 밑줄로 바꿔야합니다.
도움이 되었기를 바랍니다.
각 빌드 (대상 / 체계)에 대해 정의 / 추가 된 접두사 헤더 파일 (<project> -Prefix.pch)에 적절한 #import <project> -Swift.h 문을 넣었습니다.
유일한 작동 방법은 다음과 같습니다.
1- 첫 번째 대상 (작동중인 브리징이 있음)에서 빌드 설정 선택 Objective C Bridging Header
2- Copy Objective C Bridging Header
3- 다른 대상 열기 빌드 설정
4- 붙여 넣기 5- 변경 헤더 파일을 새 헤더 파일 (예 : 대상 Bh)에 추가
(이제 두 대상에 대해이 옵션이 있습니다)
참고 URL : https://stackoverflow.com/questions/26262029/objective-c-to-swift-header-file-with-multiple-targets
'Development Tip' 카테고리의 다른 글
onReceive BroadcastReceiver 내에서 활동 시작 (0) | 2020.11.19 |
---|---|
ORA-01795에 대한 해결 방법이 있습니까? 목록의 최대 표현식 수는 1000 오류입니까? (0) | 2020.11.19 |
새로운 Typescript 1.8.4 빌드 오류 :“빌드 : 'EventTarget'유형에 'result'속성이 없습니다. (0) | 2020.11.19 |
DateAdd를 사용하여 날짜에 요일을 추가하는 SQL Server 2005 (0) | 2020.11.19 |
DataTable에서 데이터를 추출하려면 어떻게합니까? (0) | 2020.11.19 |