NSInvalidUnarchiveOperationException: не удалось создать экземпляр класса NSLayoutConstraint

Я очень новичок в этом. Я шаг за шагом последовал за Apple по учебному курсу для проекта iPhone HelloWorld. Я запустил его в симуляторе iPhone 5.0 и разбился:

2012-11-02 14:46:06.782 HelloWorld[9880:c07] *** Terminating app due to uncaught
exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate
class named NSLayoutConstraint'
*** First throw call stack:
(0x14a2052 0xea2d0a 0x144aa78 0x144a9e9 0x32f7d7 0x32f9af 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)
terminate called throwing an exception(lldb)

Может кто-нибудь, пожалуйста, скажите мне, что пошло не так? Я использую Xcode 4.5.

Ответ 1

По умолчанию при создании нового проекта iOS в Xcode 4.5 ваша раскадровка или XIB настроены на использование Autolayout, что является новой функцией в iOS 6.0. Класс NSLayoutConstraint является частью системы Autolayout и не существует в более ранних версиях iOS.

Если вы хотите развернуть приложение в более ранней версии iOS, вам нужно изменить раскадровку или XIB, чтобы не использовать Autolayout. Это флажок в Инспекторе файлов:

turning off autolayout

Ответ 2

Ваш Xib файл (файл построителя интерфейса) содержит элементы AutoLayout, которые iOS 5 поддерживает не.

В Xcode перейдите в ваш .xib файл (ы), и для каждого из них отключите AutoLayout. На левой стороне должен быть флажок "Использовать AutoLayout", снимите флажок и повторите попытку. (Это находится под первой вкладкой инспектора левой стороны, когда у вас есть владелец файла).

Ответ 3

Я наткнулся на эту ошибку, когда я работал над более старым проектом, который я хотел обновить. Я установил флажок "Использовать автозапуск", чтобы начать работать с ограничениями, но забыл обновить параметр "Установка развертывания" на iOS 6.

Ответ 4

Вам нужно запустить его в симуляторе iPhone 6.0. Ваша ошибка:

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

Предлагает использовать автозапуск, который работает только на iOS 6.