Saya baru saja memutakhirkan ke Xcode 6 Beta 4 dan memiliki kerangka kerja yang saya buat untuk Live Views dalam Beta 2. Karena bug cepat lainnya , saya perlu menggunakan beberapa kode Obj-C. Ketika memutakhirkan, saya mendapatkan kesalahan berikut:
galat: menggunakan header penghubung dengan target kerangka kerja tidak didukung
Saya belum melihat apa pun di catatan rilis, atau menemukan jalur migrasi lainnya. Adakah orang lain yang melihat ini dan sampai pada solusi?
Saya menyadari bahwa Beta 3 menghilangkan kebutuhan kerangka kerja untuk tampilan langsung, tetapi masuk akal dalam kasus saya jika saya bisa membuatnya bekerja. Saya dapat menghapusnya sebagai fallback, tetapi lebih suka menggunakan framework jika mereka tidak sepenuhnya rusak di Beta 4.
sumber
Jawaban:
Saat status kesalahan, menjembatani header tidak diperbolehkan dalam Kerangka. The Mengimpor Kode dari Dalam Rangka Sasaran Sama bagian dari Mix & Match petunjuk dokumentasi apel di ini. Seperti yang mereka katakan, Anda perlu "Dalam file header payung Anda, impor setiap header Objective-C yang ingin Anda paparkan ke Swift".
Namun, saya menemukan bahwa Anda mungkin juga perlu membuat tajuk khusus tersebut untuk publik. Jawaban ini mengulas mengapa dan bagaimana melakukannya: Kesalahan kompiler Swift: "header non-modular di dalam modul kerangka kerja" .
Jadi, lakukan ini:
Catatan : "payung file header" adalah file (bernama [ProductName] .h) yang umumnya mewakili semua header publik dari suatu kerangka kerja. Biasanya hanya daftar pernyataan impor ke header lain yang terkandung dalam kerangka kerja. Di Xcode, jika Anda membuka UIKit.h, Anda akan melihat contoh yang baik dari file payung.
sumber
Ada dua kemungkinan. Menambahkan header yang diperlukan ke file header payung dan menjadikannya publik adalah satu cara. Namun, ini merupakan masalah jika header harus tersedia untuk Swift, tetapi tidak untuk umum.
Kemungkinan kedua yang akan membuat tajuk internal tersedia untuk Swift dijelaskan secara terperinci di sini . Pada dasarnya, peta modul yang mirip dengan yang berikut perlu dibuat:
Ini kemudian dapat dimasukkan dalam XCode menggunakan pengaturan:
sumber
header
pernyataan menerima path relatif. Apa yang Anda lakukan ketika Anda ingin menambahkan header dari kerangka kerja lain?Lihat Mengimpor Objective-C ke dalam Swift .
Untuk mengimpor kode Objective-C ke Swift dari kerangka kerja yang sama
Di file header payung Anda, impor setiap header Objective-C yang ingin Anda paparkan ke Swift. Sebagai contoh:
Jadikan file yang disertakan untuk umum di bagian "Header" kerangka kerja dari "Build Phases" -nya.
Bersihkan dan bangun kembali.
Swift akan melihat setiap tajuk yang Anda perlihatkan secara publik di tajuk payung Anda. Isi file Objective-C dalam kerangka itu akan tersedia di file Swift apa pun dalam target kerangka kerja itu secara otomatis, tanpa pernyataan impor apa pun. Gunakan kode Objective-C kustom Anda dengan sintaks Swift yang sama yang Anda gunakan dengan kelas sistem.
Penting: "file payung header" berarti file {ModuleName} .h. BTW, nama targetnya adalah {ModuleName} .framework.
sumber
Dalam kasus saya, hanya menghapus
Objective-C Bridging Header
pengaturan dari kerangka kerja sayaBuild Settings
membantu.sumber