Xcode MyProjectName-Bridging-Header.h가 존재하지 않습니다.
저는 목표-C 프로젝트에서 스위프트를 사용하기 시작하고 싶습니다.그래서 빠른 클래스를 추가했습니다.
import Foundation
@objc class System : NSObject {
@objc func printSome() {
println("Print line System");
}
}
그리고 이 파일을 .m 파일:
#import "MyProjectName-Swift.h"
프로젝트를 빌드할 때 다음 오류가 발생합니다.
Bridging header 'PathToMyProject/MyProjectName-Bridging-Header.h' does not exist
참고: "Build Settings->Swift Compiler - Code Generation->Objective-C Briding Header"에서 "MyProjectName-Briding-Header.h"로 설정됩니다.
이 문제를 해결하려면 어떻게 해야 합니까?
어떤 도움이든 감사합니다.
편집: Bridging-Header 파일: #if defined(__has_include) &&_has_include() #include #endif
#include <objc/NSObject.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#if defined(__has_include) && __has_include(<uchar.h>)
# include <uchar.h>
#elif __cplusplus < 201103L
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if defined(__has_attribute) && __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if defined(__has_attribute) && __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#if defined(__has_feature) && __has_feature(modules)
#endif
#pragma clang diagnostic pop
브리징 파일이 다른 클래스와 동일한 수준으로 작성된 경우 다음 그림과 같이 상대 경로를 추가해야 할 수 있습니다.됩니다.
설정에서 했습니다.
하지만 컴파일러는 파일을 찾지 못합니다.
하면 (따서프의즉루상추경면가하로대를서다, 트추니합가트에)./ProjectName/BridgerFileName.h
),
되고 나의 수 : 이제컴파되일목표 C클의메호를수출있다습니할소드스.
브리지 헤더 파일을 수동으로 만들고 기본 이름과 위치를 선택한 후 브리지 헤더가 루트 디렉터리 아래에 있는 프로젝트 디렉터리에 배치된다는 것을 알게 되었습니다.
이 설정에는 다음 값이 필요합니다.Targets > [당신의 앱 Target] > 빌드 설정 > 스위프트 컴파일러 - 코드 생성 > Objective-C Bridging Header:
$(SRCROOT)/$(PROJECT_NAME)/$(PROJECT_NAME)-Bridging-Header.h
프로젝트가 신속한 모듈(프레임워크)인 경우 코멘트에서 지적한 바와 같이 다음을 선호할 수 있습니다.
$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h
브리징 헤더를 제거하는 사용자용
저는 여기 있는 대부분의 다른 대답들처럼 반대 방향으로 가고 있었습니다.이전에 Bridging Header를 사용했지만 더 이상 필요하지 않았습니다.프로젝트에서 삭제한 후 질문에 언급된 오류가 발생하기 시작했습니다.저는 제 문제를 해결하기 위해 다음 단계를 수행했습니다.
- Targets > [Your App Target] > Build Settings > Swift Compiler - General > Objective-C Bridging Header로 이동하여 경로를 삭제합니다. (@Donamite 덕분에) ①검색창에 bridging을 입력하면 찾을 수 있습니다.
- 파생일자를삭제합니다.Xcode > Preferences > Locations로 이동하여 Derived Data 폴더 옆의 회색 화살표를 클릭합니다.그런 다음 프로젝트 폴더를 삭제합니다.
Swift 4.1에서
당신이 가지고 있지 않은 당신의 프로젝트.bridging-Header.h
파일, 그러나 프로젝트에 해당 경로가 있습니다.이를 위해 해당 경로를 삭제해야 합니다.
에 가다targets
파일로 작성하여 선택Build Settings
, ---->Swift Compiler - General
합니다.bridging-Header.h
아래 스크린샷을 따라갑니다.
를 합니다.bridging-Header.h
- 파일 - 파일
이제 이런 식으로...
다음은 Bridging 헤더를 작성하는 단계입니다.
파일->새로 만들기->iOS->헤더 파일, 브리징 파일 이름을 "yourProjectName-Bridging-Header"와 같이 지정합니다.h"
Build-Settings->Objective-C Bridging Header, Bridging Header 파일 이름을 "ProjectName-Bridging-Header"와 같이 지정합니다.h"
참고: 브리징 헤더 파일은 ".xcodeproj" 파일이 있는 프로젝트의 주 루트 폴더에 있어야 합니다.그렇지 않으면 Bridging 헤더 파일을 프로젝트의 루트 폴더로 이동합니다.이렇게 하면 Xcode가 브리지 파일에 액세스할 수 있습니다.
프로젝트를 빌드하고 브리징 헤더에 필요한 파일을 가져옵니다.
Swift 프로젝트에 Bridge File을 추가합니다.
1단계. 파일로 이동 > Objective-C 파일로 코코아 추가(임시 목적)
이제 Create Bridging Header 버튼을 누릅니다.
다 했어요.
BRIDE 파일이 번들로 제공됩니다.
감사해요.
브리징 헤더 파일 경로 앞에서 $(SRCROOT)/$(PROJECT_NAME)/를 사용하는 데 도움이 되었습니다.
나는 그것을 사용하는 데 도움이 되었습니다.$(SRCROOT)
내 목표-C 브리징 헤더 경로 앞에.
$(SRCROOT)/swiftLibraries/swiftLibraries-Bridging-Header.h
다음 단계를 수행합니다.
- 브리징 헤더 파일을 삭제합니다. . . (수동으로 만들 수 있음) 및;
- Objective-C Project에서 새 Swift 파일을 만듭니다. . . (가져오기가 아니라 먼저 만듭니다.)
아마도 이 두 가지가 당신의 문제를 해결하는 데 도움이 될 것입니다.
다음은 저에게 효과가 있었습니다.
- 브리징 헤더 파일은 ".xcodeproj" 파일이 있는 프로젝트의 주 루트 폴더에 있어야 합니다.프로젝트 디렉터리로 이동하고 브리지 헤더가 다른 폴더 내에 있는 경우 루트로 끌어다 놓습니다.
- 헤더 이름의 철자 오류를 수정합니다.
- 파생 데이터 지우기
- Target -> Build Settings -> Swift Compiler : General -> Obj C Header 이름 추가
- 치료하고 다시 실행합니다.
수동으로 브리징 헤더 파일 만들기
우선 Xcode가 생성된 Bridging 헤더 파일을 삭제합니다.그리고 프로젝트 이동 > 빌드 설정 > 키워드 검색으로 이동합니다.Swift 컴파일러 - 코드 생성.Objective-C Bridging Header를 클릭하고 해당 경로를 삭제합니다.이제 프로젝트를 정리합니다.
이제 탐색 모음에서 프로젝트 > 창을 선택하고 프로젝트를 선택한 후 파생된 데이터를 삭제합니다.
이제 새 파일을 만들고 소스를 선택한 다음 헤더 파일을 선택하고 브리징 헤더 파일을 만듭니다. 파일 이름은 projectname-Bridging-Header.h여야 합니다.
프로젝트 이동 > 빌드 설정 > 키워드 검색으로 이동합니다.Swift 컴파일러 - 코드 생성.Object-C Bridging Header를 클릭하고 이제 projectname-Bridging-Header.h와 같은 Object-C Bridging Header에 경로를 추가합니다.
이제 클래스를 브리징 헤더 파일로 가져오면 코드를 쉽게 컴파일할 수 있습니다.
브리징 헤더 파일은 수동으로 파일을 만들 때 다음과 같이 나타납니다.
제가 도움이 된 것은 오류 메시지에 언급된 경로로 파일을 수동으로 이동하는 것입니다.그래서:
- 파일을 삭제했습니다(휴지통으로 이동됨).
- 오류 메시지의 휴지통에서 경로로 이동
- 나중에 나는 또한 프로젝트를 청소해야 했습니다.
언급URL : https://stackoverflow.com/questions/26096402/xcode-myprojectname-bridging-header-h-does-not-exist
'programing' 카테고리의 다른 글
문자열에서 마지막 문자를 제거합니다.속어 (0) | 2023.05.01 |
---|---|
안드로이드 프로젝트에서 외부 JAR을 사용하려면 어떻게 해야 합니까? (0) | 2023.05.01 |
테이블에 트리거 SQL 서버 사용 안 함 (0) | 2023.05.01 |
bash에서 모든 하위 디렉터리의 모든 파일을 하나의 압축 파일로 gzip하는 방법 (0) | 2023.04.26 |
Bash를 사용하여 모든 하위 디렉토리에서 작업 수행 (0) | 2023.04.26 |