Pertanyaan Mendapatkan "file tidak ditemukan" di Bridging Header ketika mengimpor kerangka Objective-C ke dalam proyek Swift


Saya memiliki proyek Swift yang saya coba impor kerangka kerja berbasis ObjC. Kerangka ini terletak di sebuah direktori di bawah jalur proyek dan direferensikan oleh proyek di Xcode. Ini juga ditambahkan ke "Link Binary with Libraries" di halaman 'Build Phases' proyek.

Namun, untuk beberapa alasan, saya tidak bisa memasukkan kerangka dalam file Bridging-Header. Saya mendapatkan kesalahan berikut:

BridgingHeader.h:5:9: error: 'Parse/Parse.h' file not found
#import <Parse/Parse.h>
        ^
<unknown>:0: error: failed to import bridging header 'BridgingHeader.h'

Hal-hal yang telah saya periksa:

  1. "Pasang Header Kompatibilitas Objective-C" diatur ke "YES".
  2. Jalur Pencarian Header mencakup jalur ke kerangka kerja.

Saya yakin saya kehilangan sesuatu, jadi jika ada yang punya petunjuk, itu akan sangat bagus.


76
2017-12-16 01:23


asal


Jawaban:


Temukan solusinya:

  • The "Objective-C Bridging Header" pengaturan (alias SWIFT_OBJC_BRIDGING_HEADER) harus ditetapkan pada tingkat Target, dan BUKAN tingkat Proyek. Pastikan untuk menghapus nilai pengaturan pada tingkat Proyek.

(Bagi saya, sepertinya bug Xcode, karena saya tidak tahu mengapa itu memperbaikinya).


64
2018-01-18 06:26



Saya memiliki masalah yang sama. Saya mengubah semua impor saya dari #import "HMSegmentedControl.h" untuk #import <HMSegmentedControl/HMSegmentedControl.h> sebagai contoh.


51
2018-02-12 11:13



Saya harus menambahkan saya lib direktori di Jalur Pencarian Header Pengguna:

test target settings - user header search path

Dalam kasus saya itu lib direktori berisi .afile -library dan beberapa file header. Ini termasuk dalam file header bridging. Namun, kompiler yang cepat tidak akan menemukannya. Hanya ketika saya menambahkan ${PROJECT_DIR}/lib ke Path Pencarian Header Pengguna itu membangun target pengujian.

(Saya menggunakan Xcode 6.2 pada Mavericks 10.9.5)


21
2018-04-27 18:02



Kami menemukan pesan kesalahan yang sama, dengan penyebab yang sama sekali berbeda.

Mempersiapkan:

  • Target aplikasi, semua kode Obj-C
  • Target Tes Unit dengan satu case uji cepat & header bridging mengacu pada kode aplikasi

Ketika kami menambahkan kasus uji cepat kedua, setelah bersih (atau pada mesin rekan tim), kami melihat kesalahan ini saat membuat target uji unit.

Itu diperbaiki dengan menambahkan kelas Obj-C boneka ke target uji unit.


18
2018-03-06 23:30



Ini entah bagaimana melakukan trik untuk saya:

  • Proyek bersih
  • Bersihkan folder build
  • Mulai ulang Xcode

4
2017-08-04 15:11



Nah itu sedikit aneh tapi saya kira Anda harus menambahkan sumber daya ke fase "Salin Bundle Sumber Daya" Anda dari target pengujian Anda untuk membuatnya memuat semua header dari target aplikasi utama Anda. Dalam kasus saya, saya menambahkan main.storyboard dan itu mengurus kesalahan.

enter image description here


3
2018-04-28 16:20



Kesalahan ini muncul ketika menginstal dengan Cocoapods library CocoaImageHashing. Masalahnya adalah jalur pencarian salah. Jadi pada tingkat Target, di Pengaturan Build -> Search Paths -> Header Search Paths, jalurnya sesuai dengan folder yang tidak ada, misalnya "$ {PODS_ROOT} / Header / Publik / CocoaImageHashing", ketika struktur folder Header / Publik / Tidak ada. Saya menambahkan jalur $ {PODS_ROOT} / CocoaImageHashing dan kesalahan menghilang.


3
2018-02-23 11:09



Saya memiliki masalah dan memperbaikinya setelah menghabiskan 2 jam untuk menemukannya. Lingkungan saya seperti di bawah ini:

cocoapod 0,39.0

cepat 2.x

Xcode 7.3.1

Tangga:

  1. jalur proyek: project_name / project_name / your_bridging_header.h
  2. Di bagian Swift di Build Setting, Objective-C Bridging Header harus: project_name / your_bridging_header.h
  3. Di your_bridging_header.h, ubah semua deklarasi dari .h untuk #impor
  4. Di kelas yang digunakan your_3rd_party. Menyatakan impor your_3rd_party

2
2018-05-16 10:31



Jika membantu siapa saja.

Dalam kasus saya, file obj-c saya ditambahkan memiliki folder referensi (folder biru di xcode) dan header tidak dapat menemukannya. Cukup tambahkan file, bukan folder, dari finder ke xcode dan dipecahkan.


2
2017-07-13 22:44



Saya memiliki masalah yang sama. Bagi saya alasannya adalah bahwa saya menggunakan bridging-header yang sama untuk kedua Aplikasi saya dan Ekstensi Hari Ini. Perpanjangan Hari Ini saya tidak termasuk Parse, tetapi karena itu didefinisikan di bridging-header itu mencoba untuk mencarinya. Saya membuat bridging-header baru untuk Extension Hari Ini dan kesalahan hilang.


1
2017-12-30 16:14



Kerangka saya bekerja sebelumnya dan tiba-tiba berhenti berfungsi, dan tidak ada dari jawaban ini yang berhasil untuk saya. Saya menghapus framework dalam Build Phases> Link Binary Dengan Libraries, dan menambahkannya kembali. Mulai bekerja kembali.


1
2018-02-19 15:34