NSInvalidUnarchiveOperationException: Không thể khởi tạo lớp có tên NSLayoutConstraint


165

Tôi rất mới với điều này. Tôi đã làm theo hướng dẫn của Apple từng bước cho dự án iPhone "HelloWorld". Tôi đã chạy nó trong trình giả lập iPhone 5.0 và nó bị lỗi:

2012/11/02 14: 46: 06.782 HelloWorld [9880: c07] * Chấm dứt ứng dụng do ngoại lệ chưa được xử lý 'NSInvalidUnarchiveOperationException', lý do: 'Không thể khởi tạo lớp có tên NSLayoutConstraint' * Không thể khởi tạo lớp có tên NSLayoutConstraint '* Lần đầu tiên ném cuộc gọi: 0 0 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) chấm dứt gọi là ném một ngoại lệ (LLĐB)

Ai đó có thể vui lòng cho tôi biết những gì đã đi sai? Tôi đang sử dụng Xcode 4.5.


Bạn phải tắt tính năng Autolayout trong xib / Storyboard
beryllium

Câu trả lời:


575

Theo mặc định, khi bạn tạo một dự án iOS mới trong Xcode 4.5, bảng phân cảnh hoặc XIB của bạn được đặt để sử dụng Autolayout, đây là một tính năng mới trong iOS 6.0. Các NSLayoutConstraintlớp học này là một phần của hệ thống Autolayout, và nó không tồn tại trong các phiên bản cũ của iOS.

Nếu bạn muốn triển khai ứng dụng của mình lên phiên bản iOS cũ hơn, bạn cần thay đổi bảng phân cảnh hoặc XIB để không sử dụng Autolayout. Đó là một hộp kiểm trong Trình kiểm tra tệp:

tắt tự động thanh toán


29
Tôi đã sử dụng ScreenFlow để chụp và cắt. Tôi đã sử dụng Photoshop để biến .mov thành .gif.
cướp mayoff

Điều này cũng áp dụng cho xib's!
virata

Làm điều này sẽ vô hiệu hóa chế độ xem xoay từ dọc sang ngang ngay cả khi thực hiện các phương thức. Làm thế nào bạn giải quyết vấn đề nếu bạn vẫn muốn vòng quay diễn ra? Cảm ơn trước, và ... gif đẹp ^^
aGit

@robmayoff cảm ơn vì gif và câu trả lời hoàn hảo. vấn đề của tôi đã được giải quyết trong một giây. :)
ishhhh

Tôi thích điều này vì vậy tôi đã tạo riêng cho các điểm dừng ngoại lệ. rsaunders.co.uk/2013/06/add-exception-breakpoint.html
Robert

21

Tệp Xib của bạn (tệp trình tạo giao diện) chứa các yếu tố AutoLayout, mà iOS 5 không hỗ trợ.

Trong Xcode, hãy chuyển đến (các) tệp .xib của bạn và đối với từng tệp, hãy tắt AutoLayout. Cần có một hộp kiểm ở phía bên trái có nội dung "Sử dụng AutoLayout", bỏ chọn nó và thử lại. (Đây là dưới tab đầu tiên trong trình kiểm tra bên trái, khi bạn có chủ sở hữu Tệp) được chọn.


8

Tôi đã vấp phải lỗi này khi tôi đang làm việc trên một dự án cũ hơn mà tôi muốn cập nhật. Tôi đã chọn hộp kiểm "Sử dụng Tự động xóa" để bắt đầu làm việc với các ràng buộc, nhưng đã quên cập nhật cài đặt Mục tiêu triển khai của mình lên iOS 6.


7

Bạn cần chạy nó trong trình giả lập iPhone 6.0. Lỗi của bạn

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

Đề xuất rằng bạn đang sử dụng tính năng tự động thanh toán, chỉ hoạt động trên iOS 6.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.