지침에 따라 브리징 헤더를 만들고 프로젝트에 추가했습니다. 안타깝게도 다음 오류가 발생했습니다.
: 0 : 오류 : Objective-C 헤더 '--- path--to --- header / .... h'를 가져올 수 없습니다.
빌드 설정에서 브리징 헤더 위치에 헤더 검색 경로 문자열을 추가했지만 도움이되지 않았습니다.
이 문제를 경험 한 사람이 있습니까?
지침에 따라 브리징 헤더를 만들고 프로젝트에 추가했습니다. 안타깝게도 다음 오류가 발생했습니다.
: 0 : 오류 : Objective-C 헤더 '--- path--to --- header / .... h'를 가져올 수 없습니다.
빌드 설정에서 브리징 헤더 위치에 헤더 검색 경로 문자열을 추가했지만 도움이되지 않았습니다.
이 문제를 경험 한 사람이 있습니까?
답변:
오류가있는 폴더에 파일을 추가하도록주의하십시오! Xcode에서 파일을 만들면 프로젝트-> 프로젝트-> Header.h 폴더로 이동합니다.
Xcode는 Project-> Header.h를 찾고 있습니다.
즉, 프로젝트 폴더 (ProjectName-> ProjectNameFolder)에 파일을 넣어야합니다!
희망;)
업데이트 됨 : 무슨 뜻인지 잘 모르겠지만 문제를 해결하려면 다음을 시도하십시오.
1. 지금까지 생성 한 모든 브리징 파일을 삭제합니다.
2. 프로젝트의 메인 폴더를 선택하고 새 파일-> iOS-> 헤더 파일을 누르십시오.
3. 생성 된 헤더 파일에 가져 오기를 작성합니다.
4. Xcode-> Build Settings에서 프로젝트를 선택하고 검색 필드에 브리징을 입력하고 SWIFT_OBJC_BRIDGING_HEADER 키에 헤더 파일 이름 또는 경로를 입력하십시오!
이 단계를 따르면 헤더 파일이 올바른 위치에 생성됩니다!
: D 도움이 되길 바랍니다!
제 경우에는 실제로 순환 참조의 결과로 발생한 오류였습니다. 브리징 헤더에 클래스를 가져 왔고 해당 클래스의 헤더 파일이 신속한 헤더 ( <MODULE_NAME>-Swift.h
)를 가져 왔습니다 . Obj-C 헤더 파일에서 Swift에서 선언 된 클래스를 사용해야했기 때문에이 작업을 수행했습니다. 해결책은 단순히 @class
선언적을 사용하는 것 입니다.
따라서 기본적으로 "브리징 헤더를 가져 <MODULE_NAME>-Swift.h
오지 못했습니다"라는 오류가 발생했습니다. 위의 오류는 파일을 찾을 수 없다는 오류였으며, 그 위에는 특정 Obj-C 헤더 파일 (즉, View Controller)을 가리키는 오류였습니다.
이 파일을 살펴보면 헤더 안에 -Swift.h가 선언되어 있음을 알았습니다. 이 가져 오기를 구현으로 이동하면 문제가 해결되었습니다. 그래서 저는 객체를 사용해야 MyObject
했고, Swift에서 정의 된 객체를 호출 해 보겠습니다. 그래서 간단히 헤더를 다음과 같이 변경했습니다.
@class MyObject;
다음에서 경로를 찾으십시오.
빌드 설정 / Swift 컴파일러 - 코드 생성 / Objective-C 브리징 헤더
해당 파일을 삭제하십시오. 그럼 당신은 괜찮을 것입니다.
이것은 아마도 소수의 사람들에게만 영향을 미칠 것입니다.하지만 제 경우에는 제 프로젝트가 CocoaPods를 사용하고 있었고 그 포드 중 하나에는 자체 CocoaPod가있는 하위 사양이있었습니다. 해결책은 전체 각도 가져 오기를 사용하여 하위 포드의 파일을 참조하는 것이 었습니다.
#import <HexColors/HexColor.h>
보다는
#import "HexColor.h"
" 브리징 헤더에 나열 할 헤더 파일 을 찾을 위치를 Xcode 에 알려야 합니다 . 검색 경로 섹션을 찾고 사용자 헤더 검색 경로에 대한 프로젝트 수준 설정을 변경 하여 '포드'에 대한 재귀 항목을 추가합니다. 디렉토리 : Pods / ** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/
나는 또한이 문제를 경험했으며 슬프게도 SDK + Xcode의 버그 일뿐입니다. 저는 WWDC의 엔지니어와이 문제와 CloudKit에서 겪었던 몇 가지 다른 문제에 대해 이야기했습니다. 이러한 버그는 Xcode의 다음 시드에서 해결 될 것입니다.
베타 소프트웨어 사용에 대한 재미있는 부분입니다.
Objective-c 프로젝트에 신속한 클래스를 추가하는 데 어려움이있는 다른 사람들을 위해. 이것이 나를 위해 일하는 것입니다.
그리고 그게 다야. 이제 Objective-c처럼 코드에 신속한 클래스를 만듭니다.
적절한 방식이 아닌 cocoapods의 bridgin 헤더 파일에서 일부 파일을 가져 왔습니다.
가져 오는 대신
#import <SomeCocoaPod/SomeCocoaPod.h>
나는 썼다
#import "SomeCocoaPod.h"
그리고 이것은 내 큰 실수였습니다.
프로젝트에 임시 Objective-C 파일을 추가합니다. 원하는 이름을 지정할 수 있습니다.
예를 선택하여 Objective-C 브리징 헤더를 구성합니다.
방금 생성 한 임시 Objective-C 파일을 삭제합니다.
방금 만든 projectName-Bridging-Header.h 파일에 다음 줄을 추가합니다.
'#import <GoogleMaps / GoogleMaps.h>'
AppDelegate.swift 파일을 편집합니다.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
GMSServices.provideAPIKey("AIza....") //iOS API key
return true
}
처음 며칠간의 노력 끝에 마침내 Facebook 가입을 iOS 앱에 성공적으로 통합 할 수있었습니다. 단계는 다음과 같습니다 (컴퓨터에 Facebook SDK v4.1 이상을 이미 설치했다고 가정합니다).
여기에 언급 된대로 pList에 정보를 추가합니다.
앱을 빌드하십시오. 그리고 우! 컴파일 시간 오류가 없습니다.
다른 이유로 동일한 문제가 있습니다. 여기에 제 경우가 있습니다. 슬라이드 메뉴를 포함해야하는 프로젝트를 빌드하고 SWRevealViewController lib를 사용하여 접근하고 있습니다.
라이브러리 파일을 가져올 때 .h && .m 파일에 대한 지원 파일 아래에 하위 폴더 (SWRevealViewController)를 추가하면 두 개의 오류가 발생하고 브리지를 가져올 수 없으며 SWRevealViewController.h를 찾을 수 없습니다.
해결 방법
파일을 지원 파일로 직접 이동하면 (하위 폴더 삭제) SWRevealViewController.m이 빌드 단계-> 소스 컴파일에 자동으로 추가되고 문제가 사라집니다.
내 앱에 Today Extension을 추가 할 때 그런 종류의 오류가 발생했습니다. 확장의 빌드 대상은 내 앱의 빌드 대상과 동일한 이름의 브리징 헤더로 생성되었습니다. 확장 프로그램이 내 앱의 브리징 헤더에 나열된 파일을 볼 수 없기 때문에 이로 인해 오류가 발생했습니다.
필요한 유일한 것은 확장에 대한 브리징 헤더의 이름을 삭제하거나 변경하는 것이며 모두 괜찮습니다.
이것이 도움이되기를 바랍니다.
위의 어떤 해결책으로도 해결할 수없는 유사한 문제가있었습니다. 내 프로젝트는 CocoaPods를 사용합니다. 오류와 함께 다음 메시지와 함께 경고를 받았습니다.
Uncategorized: Target 'Pods' of project 'Pods' was rejected as an implicit dependency for 'Pods.framework' because its architectures 'arm64' didn't contain all required architectures 'armv7 arm64'
그래서 해결책은 아주 간단했습니다. 포드 프로젝트의 경우 Build Active Architecture Only 플래그를 아니요로 변경 하면 원래 오류가 사라졌습니다.