2017-12-28 22 views
0

It's not a dup of this question
나는 Objective-C 파일을 Swift 프로젝트로 가져 왔습니다. 하지만 AppDelegate를 호출하는 콜백을 가진 로그인 컨트롤러가 있습니다.
그러나 AppDelegate는 Swift 파일입니다. Apple's guideline에 따르면 ExampleProject-Swift.h 헤더 파일을 추가 한 다음이 헤더 파일을 로그인 컨트롤러에 가져 왔습니다. 그러나 올바른 방법으로 보이지 않습니다.  Swift 프로젝트에서 가져온 Objective-C 파일에서 Swift 클래스를 호출하는 방법은 무엇입니까?

그리고 AppDelegate.swift 파일

아래의 코드에서 내가 ExampleProject-Swfit.h 헤더에서 한 것입니다. 오브젝티브 C 파일을 사용하는 BTW

#ifndef ExampleProject_swift_h 
#define ExampleProject_swift_h 

#import "AppDelegate.swift" 
#endif /* ExampleProject_swift_h */ 

는, 나는 이미 ExampleProject-Bridging-Header.h를 만들었습니다.
나는 실제로 무엇이 일어나고 있는지 모른다. 누구든지이 문제를 해결하는 방법에 대해 어떤 생각을 가지고 있는가?
내 질문을 읽어 주셔서 감사합니다.

+0

http://pinkstone.co.uk/how-to-use-swift-classes-in-objective-c/ 여기 또는 https://ios.james.ooo/using-swift-in-objective를 확인해보십시오. -c-projects-f7e7a09f8be –

답변

1

ExampleProject_Swift.h 파일은 컴파일러에서 자동 생성되므로 사용자가 직접 추가하지 않아야합니다.

또한 생성 한 헤더 파일에서 Swift 소스 파일을 Objective C 헤더 파일 인 것처럼 가져 와서 컴파일러가이를 이해하지 못합니다. 이것이 LoginViewController 구현 파일에서 이상한 오류가 모두 발생하는 이유입니다.

+0

이것은 작동합니다. 고마워요. 하지만 또 다른 문제가 있습니다. 일부 글로벌 매크로를 사용하고 있습니다. swift에서 사용하려면, 신속한 파일에서 일부 글로벌 let 변수를 만들었지 만 Objective-C 파일은 이러한 변수를 찾을 수 없습니다. 그 밖의 무엇을해야합니까? 또한 이전 Objective-C 프로젝트에서'PreFixHeader.pch'를 만들어 매크로가 포함 된 파일을 가져 왔습니다. – JsW

+0

Swift 컴파일러는 아주 간단한 매크로 만 처리합니다. 스위프트 변수를 Objective C에서 볼 수있게하려면 공개로 설정해야합니다. –

+1

예, 만들었습니다. 기본 내부 액세스 수준이 작동 중입니다. Apple의 문서에 따르면 자동 생성 된 Swift 헤더에는 Objective-C 브리징 헤더가있는 경우'internal'수정 자로 표시되는 Swift 헤더가 포함됩니다. 도움을 주셔서 감사합니다. 나는이 모든 마이그레이션 작업에 대해 정말로 혼란스러워했습니다. – JsW