Pengontrol tampilan Anda mungkin memiliki kelas yang salah di xib Anda.
Saya mengunduh proyek Anda.
Kesalahan yang Anda dapatkan adalah
'NSUnknownKeyException', alasan: '[<UIViewController 0x3927310> setValue: forUndefinedKey:]: kelas ini bukan nilai kunci yang sesuai dengan kode untuk string kunci.'
Ini disebabkan oleh Second
pengontrol tampilan dalam MainWindow.xib
memiliki kelas UIViewController
bukanSecondView
. Mengubah ke kelas yang benar menyelesaikan masalah.
Ngomong-ngomong, adalah praktik yang buruk untuk memiliki nama seperti "string" di Objective-C. Ini mengundang tabrakan penamaan runtime. Hindari mereka bahkan dalam sekali aplikasi latihan. Memberi nama tabrakan bisa sangat sulit untuk dilacak dan Anda tidak ingin membuang waktu.
Alasan lain yang mungkin untuk kesalahan ini: ketika menyalin & menempel elemen dari satu pengontrol ke yang lain, Xcode entah bagaimana menyimpan tautan itu ke pengontrol asli, bahkan setelah mengedit & menautkan kembali elemen ini ke pengontrol baru.
Alasan lain yang mungkin untuk kesalahan ini:
Outlet buruk.
Anda telah menghapus atau mengganti nama nama outlet di .h
file Anda .
Hapus di .xib
atau .storyboard
Inspektur Koneksi file.
Satu lagi kemungkinan alasan
(Dalam kasus saya) Ekstensi UIView dengan properti bindable dan nilai pengaturan untuk properti bindable (yaitu bayangan, radius sudut, dll.) Lalu hapus properti tersebut dari ekstensi UIView (untuk beberapa alasan) tetapi yang berikut <userDefinedRuntimeAttributes>
tetap dalam xml (dari foo.storyboard
):
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="shadowColor">
<color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
<real key="value" value="50"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="point" keyPath="shadowOffset">
<point key="value" x="5" y="5"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
<real key="value" value="16"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="borderWidthValue">
<real key="value" value="0.0"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
Solusi: Klik kanan pada foo.storyboard
> Open as Source Code> search by keyPath (yaitu shadowRadius)> Hapus </userDefinedRuntimeAttributes>
yang menyebabkan masalah