[objective-c] NSInvalidUnarchiveOperationException : NSLayoutConstraint라는 클래스를 인스턴스화 할 수 없습니다.

나는 이것에 매우 익숙하다. 나는 iPhone 프로젝트 “HelloWorld”에 대해 Apple의 튜토리얼을 단계별로 따랐다. iPhone 5.0 시뮬레이터에서 실행했는데 충돌했습니다.

2012년 11월 2일 14 : 46 : 06.782하여 HelloWorld [9880 : C07] * 의한 캐치되지 않는 예외 ‘NSInvalidUnarchiveOperationException’이유 응용 프로그램 종료 ‘할 수 없다라는 NSLayoutConstraint 인스턴스화 클래스’* 우선 투사 호출 스택 (0x14a2052 0xea2d0a 0x144aa78 0x144a9e9 0x32f7d7 0x32f9af 0x32f6b7 0x23036d 0xd7e2c 0xd83a9 0xd85cb 0x38a73 0x38ce2 0x38ea8 0x3fd9a 0x10be6 0x118a6 0x20743 0x211f8 0x14aa9 0x138cfa9 0x14761c5x0x13b1x0

누군가 무슨 일이 있었는지 말해 줄 수 있습니까? Xcode 4.5를 사용하고 있습니다.



답변

기본적으로 Xcode 4.5에서 새 iOS 프로젝트를 만들면 스토리 보드 또는 XIB가 자동 레이아웃을 사용하도록 설정되어 있으며 이는 iOS 6.0의 새로운 기능입니다. 이 NSLayoutConstraint클래스는 자동 레이아웃 시스템의 일부이며 이전 버전의 iOS에는 존재하지 않습니다.

앱을 이전 버전의 iOS에 배포 하려면 자동 레이아웃을 사용 하지 않도록 스토리 보드 또는 XIB를 변경해야합니다 . 파일 검사기의 확인란입니다.

자동 레이아웃 끄기


답변

Xib 파일 (인터페이스 빌더 파일)에는 iOS 5가 지원 하지 않는 AutoLayout 요소가 포함되어 있습니다 .

Xcode에서 .xib 파일로 이동하여 각 파일에 대해 자동 레이아웃을 끕니다. 왼쪽에 “AutoLayout 사용”이라는 체크 박스가 있어야합니다. 체크 박스를 해제하고 다시 시도하십시오. (파일 소유자가있는 경우 왼쪽 관리자의 첫 번째 탭 아래에 있음)이 선택되었습니다.


답변

업데이트하려는 오래된 프로젝트에서 작업 할 때이 오류가 발생했습니다. 제약 조건 작업을 시작하기 위해 “자동 레이아웃 사용”확인란을 선택했지만 배포 대상 설정을 iOS 6으로 업데이트하는 것을 잊었습니다.


답변

iPhone 6.0 시뮬레이터에서 실행해야합니다. 오류 :

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

iOS 6에서만 작동하는 자동 레이아웃을 사용하도록 제안합니다.


답변