NSInvalidUnarchiveOperationException: Não foi possível instanciar a classe denominada NSLayoutConstraint


165

Eu sou muito novo nisso. Segui o tutorial da Apple passo a passo para o projeto do iPhone "HelloWorld". Eu o executei no simulador do iPhone 5.0 e ele travou:

2012-11-02 14: 46: 06.782 HelloWorld [9880: c07] * Aplicativo de encerramento devido à exceção não capturada 'NSInvalidUnarchiveOperationException', motivo: 'Não foi possível instanciar a classe denominada NSLayoutConstraint' * Primeira pilha de chamadas de lançamento: (0x14a2052 0xea2d0a 0x142aa78 0x144a9af9 0x144a7f7 0x144 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) terminar chamado lançar uma exceção (LLDB)

Alguém pode me dizer o que deu errado? Estou usando o Xcode 4.5.


Você tem que desligar recurso AutoLayout em xib / storyboard
berílio

Respostas:


575

Por padrão, quando você cria um novo projeto iOS no Xcode 4.5, seu storyboard ou XIB é definido para usar o Autolayout, que é um novo recurso do iOS 6.0. A NSLayoutConstraintclasse faz parte do sistema Autolayout e não existe nas versões mais antigas do iOS.

Se você deseja implantar seu aplicativo em uma versão mais antiga do iOS, é necessário alterar seu storyboard ou XIB para não usar o Autolayout. É uma caixa de seleção no Inspetor de arquivos:

desativando a execução automática


29
Eu usei o ScreenFlow para captura e corte. Eu usei o Photoshop para transformar o .mov em um .gif.
Rob mayoff

Isso se aplica também aos xib's!
virata

Isso desativa a rotação da visualização de retrato para paisagem, mesmo com a implementação dos métodos. Como você resolveu o problema se ainda deseja que a rotação ocorra? Agradecemos antecipadamente e ... nice gif ^^
aGit

@robmayoff obrigado pelo gif e pela resposta perfeita. meu problema foi resolvido em um segundo. :)
ishhhh

Eu gostei disso, então criei o meu para pontos de interrupção de exceção. rsaunders.co.uk/2013/06/add-exception-breakpoint.html
Robert

21

Seu arquivo Xib (arquivo do construtor de interface) contém elementos de AutoLayout, aos quais o iOS 5 não suporta.

No Xcode, vá para o (s) arquivo (s) .xib e, para cada um, desative o AutoLayout. Deve haver uma caixa de seleção no lado esquerdo dizendo "Usar AutoLayout", desmarque-a e tente novamente. (Isso fica na primeira guia do inspetor do lado esquerdo, quando você tem o proprietário do arquivo) selecionado.


8

Eu me deparei com esse erro quando estava trabalhando em um projeto mais antigo que queria atualizar. Marquei a caixa de seleção "Usar Auto-pagamento" para começar a trabalhar com restrições, mas esqueci de atualizar minha configuração de Destino de implantação para o iOS 6.


7

Você precisa executá-lo no simulador do iPhone 6.0. Seu erro:

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

Sugere que você esteja usando o autolayout, que funciona apenas no iOS 6.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.