2012-11-02 21 views
162

Jestem bardzo nowy w tym. Śledziłem krok po kroku samouczek Apple'a dla projektu iPhone'a "HelloWorld". Uruchomiłem go w symulatorze iPhone'a 5.0 i rozbił się:NSInvalidUnarchiveOperationException: Nie można utworzyć instancji klasy o nazwie NSLayoutConstraint

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)

Czy ktoś może mi powiedzieć, co poszło nie tak? Używam Xcode 4.5.

+0

Musisz wyłączyć funkcję Autolayout na xib/storyboardie – beryllium

Odpowiedz

575

Domyślnie podczas tworzenia nowego projektu iOS w Xcode 4.5, Twój scenariusz lub XIB jest ustawiony na używanie Autolayout, co jest nową funkcją w iOS 6.0. Klasa NSLayoutConstraint jest częścią systemu Autolayout i nie istnieje w starszych wersjach systemu iOS.

Jeśli chcesz wdrożyć aplikację w starszej wersji iOS, musisz zmienić scenorys lub XIB na , a nie użyć Autolayout. Jest to pole w Inspektorze pliku:

turning off autolayout

+29

Użyłem ScreenFlow do przechwytywania i przycinania . Użyłem Photoshopa, aby przekształcić .mov w .gif. –

+0

Dotyczy to również Xib's! – virata

+0

Powoduje wyłączenie rotacji widoku z pionowej na poziomą, nawet po zaimplementowaniu metod. Jak rozwiązałeś problem, jeśli nadal chcesz, aby obrót miał miejsce? Z góry dziękuję i ... niezły gif ^^ – aGit

7

Trzeba go uruchomić w symulatorze iPhone 6.0. Twój błąd:

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

sugeruje, że używasz autoLayout, który działa tylko na iOS 6.

21

Plik XIb (Interfejs plików builder) zawiera elementy, które autoLayout iOS 5 Czy nie wsparcie.

W Xcode przejdź do pliku .xib i dla każdego wyłącz AutoLayout. Po lewej stronie powinno być pole wyboru z napisem "Use AutoLayout", odznacz go i spróbuj ponownie. (Znajduje się pod pierwszą zakładką w lewym kontrolerze, gdy masz właściciela pliku).

8

Wpadłem na ten błąd, gdy pracowałem nad starszym projektem, który chciałem zaktualizować. Wybrałem pole wyboru "Użyj automatycznego usuwania", aby rozpocząć pracę z ograniczeniami, ale zapomniałem zaktualizować ustawienia celu wdrażania do iOS 6.

Powiązane problemy