Saya memutakhirkan ke Xcode 6 beta 4 dan sekarang Aplikasi saya terus macet dengan pesan
Kelas X tidak dikenal dalam file Interface Builder.
Itu macet karena seharusnya Xcode tidak dapat menemukan kelas khusus saya yang saya tautkan di Storyboard saya tetapi itu menunjukkan bahwa mereka terhubung dengan benar di antarmuka Xcode.
Saya yakin semuanya terhubung dengan benar. Satu-satunya pilihan saya adalah menghapus seluruh file storyboard dan mulai dari awal karena mungkin entah bagaimana rusak.
Sunting: Saya juga ingin menambahkan bahwa saya mencoba membersihkan, mengatur ulang simulator, mengacaukan fase pembuatan dll. Tidak ada yang berhasil.
ios
xcode
xcode6
interface-builder
uistoryboard
Epic Byte
sumber
sumber
Jawaban:
Saya menyelesaikan masalah ini saat saya mengetik pertanyaan. Saya pikir saya akan menjawab pertanyaan saya dan meninggalkannya di sini untuk siapa saja yang mungkin menghadapi masalah ini saat menggunakan Xcode 6 beta 4.
Untuk mengatasi masalah ini, Anda harus memilih masing-masing objek kelas kustom Anda di Storyboard (ini termasuk setiap tampilan kustom, bahkan pengontrol tampilan kustom sendiri).
Kemudian dengan objek-objek yang dipilih, buka inspektur identitas dan di bawah "Kelas Kustom" Anda akan melihat opsi Modul. Klik di dalam kotak teks Module, dan tekan enter.
Itu dia! Modul saat ini untuk semua objek kustom saya pasti salah diatur secara internal entah bagaimana dalam Xcode 6 beta 4. Tapi tidak ada indikasi visual tentang ini di inspektur.
Perhatikan bahwa jika menekan enter di dalam kotak teks Module tidak berfungsi, coba pilih panah ke kanan dan pilih secara manual modul Anda saat ini, kemudian kosongkan kotak teks dan tekan enter. Anda juga dapat mencoba menekan enter di dalam kotak teks kelas (meskipun ini biasanya untuk menyelesaikan masalah yang berbeda).
Berikut ini adalah gambar untuk membuat segalanya lebih jelas:
sumber
@objc(...)
ke salah satu kelas Swift saya.Terkadang Xcode terjawab
customModule="AppName" customModuleProvider="target"
Untuk memperbaikinya, buka storyboard sebagai kode sumber dan ganti baris ini:
untuk ini:
sumber
customModuleProvider
, maka kesalahan hilang.customModuleProvider
melakukannya untuk saya juga, terima kasih!Saya memiliki masalah ini setelah mengganti nama kelas cepat. Memecahkannya dengan menggunakan direktif @objc:
sumber
@objc class X
dan berubah untuk@objc(X) class X
bekerja.@objc()
arahan tidak diperlukan untuk kelas ViewController 'asli' ...Proyek dengan Banyak Target
Dalam kasus saya, saya sedang mengerjakan Proyek dengan banyak Target dan masalah "warisan dari Target" tidak dicentang. Memilih "inherit from target" menyelesaikan masalah saya
sumber
Ini bekerja untuk saya ..
Periksa sumber terkompilasi Anda, apakah file itu (misalnya; ViewController.m) ditambahkan atau tidak, dalam kasus saya file ViewController tidak ditambahkan sehingga memberi saya kesalahan ..
sumber
Compile Sources
. Ini benar-benar solusi yang tepat (& hanya) untuk beberapa orang.Ini dapat terjadi pada Xcode apa pun di atas 6.0. Itu terjadi pada saya setelah mengganti nama beberapa kelas ViewController di proyek Swift (tapi saya kira itu akan terjadi dengan Obj-C juga). Anda hanya perlu membuka pembuat antarmuka, pergi ke Identity Inspector of ViewController yang kelasnya telah diubah namanya, pilih kelas dan tekan Enter. Itu akan menugaskan kembali kelas berganti nama menjadi ViewController yang dipilih dan juga mengatur ulang Nilai Modul yang hilang setelah mengganti nama kelas.
Pembaruan untuk Xcode 8.1 (mungkin juga 8.0):
Xcode 8.1 hanya macet. Sederhana dan mengganggu hanya crash dan tidak mencetak apa pun. Saya mengejar kecelakaan hantu selama satu jam hanya untuk mengetahui bahwa itu adalah hal yang sama - kelas yang tidak ditugaskan di IB. Jika Anda mendapatkan crash phantom, periksa IB untuk kelas yang belum ditetapkan terlebih dahulu.
sumber
Terkadang controller yang Anda sediakan kehilangan target keanggotaannya dari aplikasi saat ini. Dalam hal itu, menekan enter pada bidang "Modul" tidak akan melakukan apa-apa. Pergi ke controller dan pastikan itu memiliki keanggotaan target yang ditetapkan ke aplikasi saat ini.
sumber
Mengaktifkan
Inherit Module From Target
mengambil modul target yang benar. Itu memecahkan masalah.sumber
Jawaban saya: setel Modul kustom sama dengan nama Pod kustom (dalam contoh saya - nama kelas kustom) seperti pada tangkapan layar terlampir
Solusi ini untuk kasus tertentu : untuk kelas tampilan kustom dari kerangka Pod (atau Carthage ).
Infrastruktur: XCode8, Swift3
sumber
Saya memperbaikinya dengan melakukan persis kebalikan dari yang disarankan ChikabuZ (terima kasih telah menunjukkannya). Di file storyboard, temukan ini:
dan ganti dengan ini:
Saya tidak bisa percaya berapa jam saya kehilangan bug di kompiler Swift dan Xcode 6
sumber
Memilih yang tepat
Module
untuk saya,Custom Class
saya memecahkan masalah ini.Ini dia :
sumber
Saya menghadapi masalah ini di Xcode 8 , untuk menyelesaikannya saya harus memodifikasi storyboard di editor teks.
Secara umum, cari kontrol Anda dan hapus
customModule
dancustomModuleProvider
dari entitas kontrol.Melakukan tipuan untuk saya.
sumber
Saya memiliki masalah yang sama.
Dalam kasus saya, Xcode tidak menambahkan kelas khusus saya ke: Target> Build Phase> Compile Sources.
Jadi saya sarankan Anda untuk memverifikasi apakah CustomClass.m Anda ada di sana.
Saya harap ini membantu Anda.
sumber
Saya menghadapi masalah ini dalam Xcode 6.1 ketika saya menghapus
Main.storyboard
,LaunchScreen.xib
file danViewController
kelas default dari proyek saya.Saya memperbaikinya dengan menghapus
Launch Screen File
danMain Interface
entri dariInfo.plist
sumber
Periksa apakah kelas Anda memiliki Keanggotaan Target yang benar .
sumber
Saya mencari Google di mana-mana untuk ini. Tidak ada jawaban yang berfungsi untuk saya sampai saya bertemu 1 pria yang meminta saya untuk memindahkan folder proyek saya ke desktop. Itu hanya bekerja secara otomatis. Rupanya jika Anda memiliki Anda memproyeksikan folder ke banyak folder, XCODE sebenarnya rusak.
sumber
Langkah-langkah ini bekerja untuk saya.
1) Hapus Data Berasal.
2) Hapus file .h dan .m
3) Buat lagi file .h dan .m
sumber
Saya memecahkan ini dengan membuka file storyboard saya sebagai kode sumber dan menggunakan perintah-F untuk mencari kelas saya yang tidak diketahui dan menghapus kelas kustom yang terkait dengannya.
sumber
Apa yang dikatakan @gfrs benar, Anda perlu mengatur Modul. Namun saya pernah mengalami masalah bahwa kelas saya tidak terdaftar dalam
Class
dropdown. Akhirnya saya menghapus file cepat, memulai kembali Xcode dan membuat ulang file. Akhirnya kelas terdaftar dan dapat digunakan di Storyboard.Lihat juga jawaban ini , yang sepertinya memecahkan masalah 'nyata' yang saya temui.
sumber
Saya memecahkan masalah ini dengan mengetikkan nama Modul (sayangnya daftar drop tidak akan menunjukkan apa-apa ...) di Kelas Kustom inspektur identitas untuk semua controller View dan pandangan.
Anda mungkin juga perlu menunjukkan penyedia target. Untuk mencapai tujuan ini, Anda dapat membuka storyboard dalam mode kode sumber dan menambahkan atribut "customModuleProvider" di braket ViewController dan sudut siku.
sumber
Solusi saya (Xcode 8.1 Swift 3.0):
Xxx kelas tidak dikenal dalam file Interface Builder.
Buka StoryBoard sebagai Source Code dan cari xxx . Hapus atribut yang berisi nilai xxx . Bangun dan Lari.
sumber
customModule="" customModuleProvider=""
Dalam kasus saya, saya menambahkan bendera
-ObjC
keOther Linker Flags
dalam pengaturan proyek untuk membuatnya berfungsi. Saya juga mencoba dengan-all_load
flag dan itu bekerja dengan baik juga.sumber
Dalam kasus saya, kelas yang dirujuk di Storyboard / xib tidak memiliki set Keanggotaan Target .
Untuk memperbaikinya, berikan kelas itu
.h
dan.m
ajukan Keanggotaan Target yang sama dengan kelas Anda yang lain.sumber
Solusi saya adalah menghapus @objc dari definisi kelas Custom.
sumber
Saya menghadapi masalah ketika saya memindahkan storyboard dari proyek Swift ke proyek Objective-c, memperhatikan jawaban vvkuznetsov , ternyata dua proyek menggunakan pengidentifikasi yang sama. I "Produk -> Bersihkan" dan ketuk tombol Enter pada bidang teks Modul dan Kelas. masalah itu hilang.
sumber
Saya memperbaiki ini sesuai dengan saran Laura tetapi saya tidak perlu membuat ulang file.
Menggunakan XCode 4, di Project Navigator, pilih file .m yang berisi kelas yang dikeluhkannya
Pergi ke View-> Utilities-> Show File Inspector (ini akan menunjukkan File Inspector ke kanan, dengan info .m-file)
Buka bagian Keanggotaan Target dan pastikan target Anda dipilih untuk file .m ini
Ketika saya menambahkan file .m saya ke proyek saya, itu tidak menambahkannya ke target default saya untuk beberapa alasan dan itu menyebabkan saya mendapatkan kesalahan yang Anda sebutkan.
sumber
Masalah saya adalah kesalahan pengguna. Saya memiliki UIView generik di storyboard saya dan di bagian Kelas Kustom Inspektur Identitas, saya tidak sengaja mengubah nama dari UIView menjadi omong kosong.
Yang diperlukan untuk memperbaikinya adalah mengubahnya kembali ke UIView.
sumber
Apa yang hanya bekerja untuk saya sebenarnya menambahkan nama modul ke file xib ...
Sooo, file xib terlihat seperti ini:
Solusi yang mengerikan menurut saya, tapi itu seharusnya bagaimana Apple ingin kita melakukannya sekarang.
Pertanyaan ini menunjukkan 3 kemungkinan pekerjaan di beta 4 ... tampaknya Apple tidak terlalu membantu dalam situasi ini menurut beberapa orang karena mereka menyebutnya "Bekerja sebagaimana dimaksud."
sumber
Saya memiliki masalah yang sama dengan Xcode Versi 6.1 (6A1052d). Saya pikir masalah muncul jika Anda mengganti nama Proyek Aplikasi / Xcode Anda.
Solusi saya adalah menambahkan nama modul di pembangun antarmuka secara manual.
sumber
Saya mengalami masalah ini setelah saya menambahkan target baru, kemudian membuat kelas baru menggunakan dialog 'File Baru' tetapi tidak sengaja gagal memeriksa target baru serta target asli dalam dialog pembuatan, sehingga objek hanya ditambahkan ke saya target asli. Solusinya adalah menghapus file sumber (hanya menghapus referensi) lalu menambahkannya kembali menggunakan 'Tambah File', kali ini memeriksa kedua target.
sumber