IBNSLayoutConstraint라는 클래스를 인스턴스화할 수 없습니다.
XCode6 베타를 사용하고 있으며 Swift를 사용해보고 있습니다.View 컨트롤러에 일부 자동 레이아웃 제약 조건을 넣으면 앱이 충돌하고 다음 오류가 발생합니다.Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named IBNSLayoutConstraint'
런타임에 제거되는 IBOutlet에 제약 조건을 설정했기 때문에 이 오류가 발생합니다.이 문제는 인터페이스 작성기에서 제약 조건을 자리 표시자로 설정할 때 발생합니다.제약 조건이 제거되었기 때문에 보관을 해제하려고 하면 보관할 수 없다는 오류가 발생합니다.
이 문제를 해결하는 방법은 두 가지가 있습니다.
방법 1
- 스토리보드에서 마우스 오른쪽 단추 클릭 > 다른 이름으로 열기 > 소스 코드
- xml에서 xml 파일을 합니다.
placeholder="YES". - 런타임에 제거되도록 설정된 제약 조건을 찾을 수 있습니다.제약 조건에서 자리 표시자 특성을 제거하고 저장한 후 닫습니다.
- 앱을 실행하면 문제가 해결됩니다.
방법 2
- 인터페이스 빌더에서 문제의 원인이 되는 제약 조건을 찾습니다.GUI에서 자리 표시자 옵션의 선택을 취소합니다.이는 충돌의 원인이 되는 View 컨트롤러의 IO 콘센트에 설정된 제약 조건 중 하나입니다.

다음과 같이 표시해야 합니다.

대안
실제로 제약 조건을 자리 표시자로 지정하려는 경우 참조하는 모든 배출구를 제거해야 합니다.이렇게 하려면 자리 표시자가 될 제약 조건을 선택합니다.그런 다음 Connections Inspector(->)를 열고 해당 제약 조건에 존재할 수 있는 참조 배출구를 제거합니다.
저는 방금 같은 문제를 겪었고 다음과 같은 문제가 해결되었습니다.
앱 스토어에 앱의 작동 버전을 릴리스하고 며칠 후 다시 작업하기 위해 UIT 탭바 컨트롤러의 탭 중 하나를 탭하면 다음 오류와 함께 충돌했습니다.
Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named IBNSLayoutConstraint'
제가 알고 있는 플레이스홀더 레이아웃 제약 조건이나 정의되어서는 안 되는 콘센트 제약 조건이 없었습니다.
저에게 해결책은 단순히 크기 클래스를 끄고 아이폰의 크기 클래스 데이터를 유지하는 것이었습니다(앱은 아이폰 전용입니다).이것은 제가 사이즈 수업에서 놓친 모든 것을 삭제한 것이 틀림없습니다.저는 사이즈 수업을 원해서 다시 켰는데 앱이 다시 작동했습니다.
이것은 반드시 제약 조건 문제는 아닐 수 있습니다.레이아웃에 적용되는 크기 클래스에 대해 "설치됨"을 선택하지 않았기 때문에 발생했습니다. 여기를 참조하십시오.
크기 클래스를 사용하는 데 문제가 발생했습니다.스토리보드 속성에서 해당 옵션을 비활성화하고 자동 레이아웃만 사용합니다.앱이 아이폰 전용이라 큰 문제는 아니었습니다.
결국 제게 일어난 일은 다른 xib에 복사하기 위해 인터페이스 빌더 내부의 하위 뷰를 잘라낸 것입니다.이로 인해 원래 xib 인터페이스 작성기의 하위 보기가 회색으로 표시됩니다.하위 보기를 원래 위치에서 제거한 후(선택 및 삭제).저는 오류를 제거할 수 있었습니다.
검사자 창의 "자동 레이아웃 사용"에서 "검사자 파일 표시"에서 제약 조건을 사용하지 않는 xib 파일을 선택할 때 검사자 창에 옵션이 있습니다.
스택 오버플로에서 찾은 솔루션을 사용하여 스크롤 뷰에 내장된 선택기 컨트롤이 제대로 작동하도록 스크롤 뷰를 변경했습니다.저의 새로운 스토리보드는 스크롤 뷰에 이러한 속성을 추가했습니다. 제게는 괜찮은 것 같았습니다.
delaysContentTouches="NO" canCancelContentTouches="NO"
하지만 다른 장면에서 스토리보드에서 다음과 같은 새로운 조각을 보았습니다.
<variation key="default">
<mask key="subviews">
<exclude reference="86H-aM-wei"/>
</mask>
</variation>
나는 그것이 어디서 왔는지 전혀 모릅니다.처음에는 모든 것이 제 개발 기계에서 찾을 수 있는 것처럼 보였기 때문에 무시했습니다.하지만 빌드가 릴리스로 빌드되고 테스트되었을 때 충돌이 발생했습니다.그 가짜(?) 조각을 제거하는 것이 충돌을 해결했고 다른 어떤 것에도 영향을 미치지 않은 것으로 보입니다.
사용자 지정 UICollectionViewCell에 단추가 있을 때 이 문제가 발생했으며 해당 클래스의 IOAutlet과 같은 제한이 있었습니다.저는 버튼을 셀에서 상위 뷰 컨트롤러로 옮겼고, IBO 버튼은 셀에서 여전히 참조되지만 실제로 셀에 존재하지 않아 모든 것을 날려버렸습니다.방금 그 아이부렛들을 제거해야 했고 모든 것이 다시 잘 작동했습니다!
언급URL : https://stackoverflow.com/questions/24095318/could-not-instantiate-class-named-ibnslayoutconstraint
'programing' 카테고리의 다른 글
| CSS를 사용하여 둥근 모서리 만들기 (0) | 2023.08.19 |
|---|---|
| 섹션 또는 그룹 이름 'oracle.manageddataaccess.client'가 이미 정의되었습니다. (0) | 2023.08.19 |
| PowerShell의 Get-Content, Regex 및 Set-Content 다음에 모든 새로운 라인이 삭제되는 이유는 무엇입니까? (0) | 2023.08.19 |
| 유형 스크립트의 열거 문자열에 캐스팅 (0) | 2023.08.19 |
| imshow의 수치가 너무 작습니다. (0) | 2023.08.14 |