Mengikuti instruksi, saya telah membuat header penghubung dan menambahkannya ke proyek saya. Sayangnya, kesalahan berikut terjadi:
: 0: error: tidak dapat mengimpor header Objective-C '--- jalur - ke --- header / .... h'
Dalam pengaturan build saya menambahkan string jalur pencarian header ke lokasi header bridging, tetapi tidak ada yang membantu.
Adakah yang pernah menangani masalah ini?
ios
swift
xcode6
bridging-header
objective-c-swift-bridge
Nikita Pronchik
sumber
sumber
Jawaban:
Berhati-hatilah untuk menambahkan file ke folder yang dikeluhkan kesalahan Anda! Saya telah melakukan kesalahan yang sama, jika Anda membuat file dari Xcode, itu akan masuk ke folder: Project-> Project-> Header.h
Dan Xcode sedang mencari Project-> Header.h
Itu berarti Anda harus meletakkan file di dalam folder proyek Anda (ProjectName-> ProjectNameFolder)!
Semoga itu bisa membantu;)
DIPERBARUI: Saya tidak yakin apakah saya mengerti maksud Anda, tetapi coba ini untuk menyelesaikan masalah Anda:
1. Hapus semua file penghubung yang Anda buat sampai sekarang.
2. Pilih folder utama proyek dan tekan file baru-> iOS-> File Header.
3. Tulis impor Anda di file header yang dibuat.
4. Pilih proyek di dalam Xcode-> Bangun Pengaturan, ketik di bidang pencarian: menjembatani dan memasukkan kunci SWIFT_OBJC_BRIDGING_HEADER nama file header Anda atau path ke sana!
Jika Anda mengikuti langkah-langkah ini, file header Anda akan dibuat di lokasi yang benar!
: D Semoga membantu!
sumber
Dalam kasus saya ini sebenarnya adalah kesalahan sebagai akibat dari referensi melingkar. Saya memiliki kelas yang diimpor di header bridging, dan file header kelas itu sedang mengimpor swift header (
<MODULE_NAME>-Swift.h
). Saya melakukan ini karena di file header Obj-C saya perlu menggunakan kelas yang dideklarasikan di Swift, solusinya adalah cukup menggunakan@class
deklaratif.Jadi pada dasarnya kesalahan mengatakan "Gagal mengimpor header penghubung", kesalahan di atasnya mengatakan
<MODULE_NAME>-Swift.h
file tidak ditemukan, di atas itu adalah kesalahan yang menunjuk ke file Header Obj-C tertentu (yaitu Pengontrol Tampilan).Memeriksa file ini saya perhatikan bahwa -Swift.h telah dideklarasikan di dalam header. Memindahkan impor ini ke implementasi menyelesaikan masalah. Jadi saya perlu menggunakan sebuah objek, sebut saja itu
MyObject
didefinisikan di Swift, jadi saya cukup mengubah header untuk mengatakansumber
Temukan jalannya di:
Pengaturan Build / Kompilator Swift Pembuatan Kode / Header Bridging Objective-C
dan hapus file itu. Maka Anda harus baik-baik saja.
sumber
Ini mungkin hanya akan memengaruhi sebagian kecil orang, tetapi dalam kasus saya, proyek saya menggunakan CocoaPods dan salah satu pod tersebut memiliki sub-spesifikasi dengan CocoaPods-nya sendiri. Solusinya adalah dengan menggunakan impor sudut penuh untuk mereferensikan file apa pun di sub-pod.
Daripada
sumber
Bagi saya menghapus data turunan memperbaikinya, saya perhatikan bahkan jika saya check out dari komit lama, masalah yang sama terjadi.
Anda dapat mencapai opsi itu dari Window-> Projects.
sumber
Bagi saya itu karena saya lupa menambahkannya ke Pengaturan Build Target.
sumber
"kami perlu memberi tahu Xcode di mana mencari file header yang kami cantumkan di header penghubung kami . Temukan bagian Jalur Pencarian, dan ubah setelan tingkat proyek untuk Jalur Penelusuran Header Pengguna , tambahkan entri rekursif untuk 'Pod' direktori: Pods / ** " http://swiftalicio.us/2014/11/using-cocoapods-from-swift/
sumber
Saya juga mengalami masalah ini dan sayangnya itu hanya bug di SDK + Xcode. Saya berbicara dengan seorang insinyur di WWDC, tentang ini dan beberapa masalah lain yang saya alami dengan CloudKit. Bug ini akan diatasi di seed Xcode berikutnya.
Ini bagian yang menyenangkan tentang menggunakan perangkat lunak beta.
sumber
untuk orang lain yang kesulitan menambahkan kelas cepat ke dalam proyek objektif-c. inilah yang berhasil untuk saya:
dan hanya itu. sekarang buat kelas swift di kode Anda seperti itu objektif-c.
sumber
Saya mengimpor beberapa file dari file header bridgin dari cocoapods tidak dengan cara yang benar.
Bukannya mengimpor
saya menulis
Dan ini adalah kesalahan BESAR saya
sumber
Tambahkan file Objective-C sementara ke proyek Anda. Anda dapat memberinya nama apa pun yang Anda suka.
Pilih Ya untuk mengkonfigurasi header penghubung Objective-C.
Hapus file Objective-C sementara yang baru saja Anda buat.
Di file projectName-Bridging-Header.h yang baru saja dibuat, tambahkan baris ini:
'#import <GoogleMaps / GoogleMaps.h>'
Edit file AppDelegate.swift:
Ikuti tautan untuk sampel lengkap
sumber
Bagi saya itu tidak memilih 'Salin item jika diperlukan' di jalur tujuan sambil menambahkan kerangka kerja. Cukup tambahkan kembali kerangka kerja dengan opsi ini dipilih.
sumber
Setelah beberapa hari awal perjuangan, saya akhirnya berhasil mengintegrasikan pendaftaran Facebook ke aplikasi iOS saya. Berikut langkah-langkahnya (saya asumsikan Anda telah menginstal Facebook SDK v4.1 atau lebih tinggi di komputer Anda):
Tambahkan informasi di pList seperti yang disebutkan di sini
Buat aplikasi Anda. Dan wohoo! tidak ada kesalahan waktu kompilasi.
sumber
Saya memiliki masalah yang sama karena alasan yang berbeda, inilah kasus saya, saya membangun proyek yang memerlukan menu slide untuk dimasukkan, saya menggunakan lib SWRevealViewController untuk mendekati itu
ketika saya mengimpor file perpustakaan saya menambahkan sub-folder (SWRevealViewController) di bawah File Pendukung untuk file .h && .m, itu menembakkan dua kesalahan, tidak dapat mengimpor jembatan dan SWRevealViewController.h tidak ditemukan.
Bagaimana saya memperbaikinya
ketika saya memindahkan file ke File Pendukung secara langsung (hapus sub-folder), SWRevealViewController.m secara otomatis ditambahkan ke Build Phases -> Compile Sources dan masalah hilang
sumber
Saya mengalami kesalahan seperti itu, ketika saya menambahkan Ekstensi Hari Ini ke aplikasi saya. Target build untuk ekstensi dibuat dengan nama header penghubung yang sama dengan target build aplikasi saya. Ini menyebabkan kesalahan, karena ekstensi tidak melihat file yang tercantum di header penghubung aplikasi saya.
Satu-satunya hal yang perlu Anda lakukan adalah menghapus atau mengubah nama header penghubung untuk ekstensi dan semuanya akan baik-baik saja.
Semoga ini bisa membantu.
sumber
Saya benar-benar membuat file OSX Source Objective C kosong di bawah proyek (di mana semua file swift saya berada).
Saya menambahkan impor dan kemudian menghapus file .m .
sumber
Di antara perbaikan lainnya, saya mengalami kesalahan ketika saya mencoba melakukan Product-> Archive. Ternyata saya punya ini:
Setelah mengaturnya di baris terakhir itu, itu berhasil.
sumber
Memiliki masalah serupa yang tidak dapat diselesaikan dengan solusi apa pun di atas. Proyek saya menggunakan CocoaPods. Saya perhatikan bahwa bersama dengan kesalahan saya mendapat peringatan dengan pesan berikut:
Jadi solusinya cukup sederhana. Untuk project Pods, ubah flag Build Active Architecture Only menjadi No dan error asli menghilang.
sumber
Setel Precompile Bridging Header ke Tidak perbaiki masalah untuk saya.
sumber