NSInvalidUnarchiveOperationException: Tidak dapat membuat instance kelas yang bernama NSLayoutConstraint

165

Saya sangat baru dalam hal ini. Saya mengikuti tutorial Apple langkah demi langkah untuk proyek iPhone "HelloWorld". Saya menjalankannya di simulator iPhone 5.0 dan jatuh:

2012-11-02 14: 46: 06.782 HelloWorld [9880: c07] * Mengakhiri aplikasi karena pengecualian yang tidak tertangkap 'NSInvalidUnarchiveOperationException', alasan: 'Tidak dapat membuat instance kelas yang bernama NSLayoutConstraint' * Panggilan lemparan pertama: (0x14a2052 0xea2d0a 0x144g7x7f0f04f0f04f0f04f0f04f0f04f071497) 0x32f6b7 0x23036d 0xd7e2c 0xd83a9 0xd85cb 0x38a73 0x38ce2 0x38ea8 0x3fd9a 0x10be6 0x118a6 0x20743 0x211f8 0x14aa9 0x138cfa9 0x14761c5 0x13db022 0x13d990a 0x13d8db4 0x13d8ccb 0x112a7 0x12a9b 0x1fed 0x1f15 0x1) mengakhiri disebut melemparkan pengecualian (lldb)

Bisakah seseorang tolong beri tahu saya apa yang salah? Saya menggunakan Xcode 4.5.

pengguna1703590
sumber
Anda harus mematikan fitur Autolayout di xib / storyboard
beryllium

Jawaban:

575

Secara default, ketika Anda membuat proyek iOS baru di Xcode 4.5, storyboard atau XIB Anda diatur untuk menggunakan Autolayout, yang merupakan fitur baru di iOS 6.0. The NSLayoutConstraintkelas merupakan bagian dari sistem AutoLayout, dan itu tidak ada dalam versi iOS.

Jika Anda ingin menggunakan aplikasi Anda ke versi iOS yang lebih lama, Anda perlu mengubah storyboard atau XIB Anda untuk tidak menggunakan Autolayout. Ini kotak centang di Pemeriksa File:

mematikan pembayaran otomatis

rob mayoff
sumber
29
Saya menggunakan ScreenFlow untuk menangkap dan memotong. Saya menggunakan Photoshop untuk mengubah .mov menjadi .gif.
rob mayoff
Ini berlaku untuk xib juga!
virata
Melakukan hal ini menonaktifkan tampilan rotasi dari potret ke lansekap bahkan memiliki metode yang diterapkan. Bagaimana Anda menyelesaikan masalah jika Anda masih menginginkan rotasi terjadi? Terima kasih sebelumnya, dan ... gif bagus ^^
aGit
@robmayoff terima kasih atas gif dan jawaban yang sempurna. masalah saya terpecahkan dalam sedetik. :)
ishhhh
Saya suka ini jadi saya buat sendiri untuk breakpoints pengecualian. rsaunders.co.uk/2013/06/add-exception-breakpoint.html
Robert
21

File XIB Anda (Antarmuka File builder) mengandung unsur AutoLayout, yang iOS 5 tidak tidak didukung .

Di Xcode, buka file .xib Anda, dan masing-masing, matikan AutoLayout. Harus ada kotak centang di sebelah kiri mengatakan "Gunakan AutoLayout", hapus centang dan coba lagi. (Ini berada di bawah tab pertama di sisi kiri inspektur, ketika Anda memiliki pemilik File) dipilih.

WDUK
sumber
8

Saya menemukan kesalahan ini ketika saya sedang mengerjakan proyek yang lebih tua yang ingin saya perbarui. Saya telah memilih kotak centang "Gunakan Autolayout" untuk mulai bekerja dengan kendala, tetapi lupa memperbarui pengaturan Target Penempatan saya ke iOS 6.

jbryant
sumber
7

Anda harus menjalankannya di simulator iPhone 6.0. Kesalahan Anda:

* Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named NSLayoutConstraint' *

Menyarankan Anda menggunakan autolayout, yang hanya berfungsi di iOS 6.

yeesterbunny
sumber