[objective-c] Swift 코드를 Objective-C로 가져 오려면 어떻게해야합니까?

Swift에서 라이브러리를 작성했으며 Objective-C로 작성된 현재 프로젝트로 라이브러리를 가져올 수 없었습니다.

가져 오는 방법이 있습니까?

#import "SCLAlertView.swift" - 'SCLAlertView.swift' file not found



답변

가져와야 TargetName-Swift.h합니다. 대상 이름입니다. 다른 답변은 클래스 이름을 사용하는 실수를합니다.

이 단일 파일은 주석이 있거나 주석을 @objc받는 프로젝트의 모든 Swift 클래스에 대한 Objective-C 인터페이스를 정의하는 자동 생성 헤더입니다 NSObject.

고려 사항 :

  • 대상 이름에 공백이 포함 된 경우 (예 : 밑줄로 대체 My Project됩니다 My_Project-Swift.h)

  • 대상이 프레임 워크 인 경우 가져와야합니다. <TargetName/TargetName-Swift.h>

  • Swift 파일이 대상의 구성원인지 확인하십시오


답변

Apple 웹 사이트의 지침 :

동일한 프레임 워크에서 Swift 코드를 Objective-C로 가져 오려면

아래 빌드 설정포장 , 확인하게 정의 모듈
이 프레임 워크 대상에 대한 설정이 설정되어 있음 . 이 구문을 사용하고 적절한 이름으로 대체하여 해당 프레임 워크 대상에서 해당 프레임 워크 대상 내의 Objective-C .m 파일로 Swift 코드를 가져 오십시오.

#import “ProductName-Swift.h”

개정:

“ProductName-Swift.h” 는 .m 파일 로만 가져올 수 있습니다 .

대상의 Swift 파일은이 import 문을 포함하는 Objective-C .m 파일에서 볼 수 있습니다.

주기적 참조를 피하려면 Swift를 Objective-C 헤더 파일로 가져 오지 마십시오. 대신, Objective-C 헤더에서 사용하도록 Swift 클래스를 전달할 수 있습니다. Objective-C에서 Swift 클래스를 서브 클래 싱 할 수 없습니다.

여기에 이미지 설명을 입력하십시오


답변

수행 할 작업은 다음과 같습니다.

  1. Objective-C에서 새 프로젝트 작성

  2. .swift파일
      만들기

    • 팝업 창이 나타나 물을 것이다 “헤더를 브리징 목표 -C를 구성하고 싶은 당신을” .
    • 예를 선택하십시오 .
  3. Xcode 프로젝트 파일을 클릭하십시오

  4. 빌드 설정을 클릭하십시오

  5. 검색 표시 줄을 찾아 모듈 정의를 검색하십시오 .

  6. 값을 예로 변경하십시오 .

  7. 제품 모듈 이름을 검색 하십시오 .

  8. 값을 프로젝트 이름으로 변경하십시오.

  9. App delegate에서 다음을 추가하십시오. #import "YourProjectName-Swift.h"


참고 : Swift 파일을 사용할 때마다 다음 줄을 가져와야합니다.

#import "YourProjectName-Swift.h"


답변

Cocoapods를 사용하고 ObjC 프로젝트에서 Swift 포드를 사용하려는 경우 간단히 다음을 수행 할 수 있습니다.

@import <FrameworkName>;

여기에 이미지 설명을 입력하십시오


답변

프로젝트 파일에서 빌드 설정으로 이동하여 “Objective-C Generated Interface Header Name”을 검색 하십시오 . 해당 특성의 값은 포함해야하는 이름입니다.

“제품 모듈 이름”속성 (위의 속성이 기본적으로 의존하는 속성)이 테스트 / 디버그 / 릴리스 / 등 (내 경우와 같이)에 대해 컴파일하는지에 따라 달라지는 경우이 속성을 해당 속성과 독립적으로 만드십시오. 사용자 정의 이름을 설정하여 변형.


답변

Swift파일을 제대로 가져 Objective-c오지 않으면 파일을 가져 오면 이 오류가 발생할 수 있습니다 import.

참고 : Swift 파일을 외부로 가져올 필요는 없으며 신속한 파일을 처리하는 파일 하나만 가져와야합니다.

Objective-C 프로젝트 내에 Swift 파일작성 / 복사 한 경우 . 브리징 헤더를 자동으로 생성했을 것입니다.

확인 Objective-C Generated Interface Header NameTargets -> Build Settings.

여기에 이미지 설명을 입력하십시오

위의 내용에 KJExpandable-Swift.h따라 그대로 가져옵니다 .

귀하의가 될 것입니다 TargetName-Swift.h경우, TargetName프로젝트 이름 또는 다른 대상에 따라 다릅니다은 추가하고 그것을 실행했을 수 있습니다.

아래의 목표는입니다 KJExpandable.KJExpandable-Swift.h
여기에 이미지 설명을 입력하십시오


답변

첫 번째 단계:-

프로젝트 대상-> 빌드 설정-> 검색 ( ‘정의’)-> 모듈
업데이트 값 정의 아니오예로 선택하십시오.

“정의 모듈”: YES .

“항상 Swift 표준 라이브러리 임베드”: .

“Objective-C 호환성 헤더 설치”: .

여기에 이미지 설명을 입력하십시오

두번째 단계:-

아래와 같이 Objective C “.h”파일에 Swift 파일 클래스 추가

#import <UIKit/UIKit.h>

@class TestViewController(Swift File);

@interface TestViewController(Objective C File) : UIViewController

@end

목표 C “.m”파일에서 ‘ProjectName (귀하의 프로젝트 이름) -Swift.h’가져 오기

//TestViewController.m 
#import "TestViewController.h"

/*import ProjectName-Swift.h file to access Swift file here*/

#import "ProjectName-Swift.h"