NSInvalidUnarchiveOperationException: Could not instantiate class named NSLayoutConstraint NSInvalidUnarchiveOperationException: Could not instantiate class named NSLayoutConstraint objective-c objective-c

NSInvalidUnarchiveOperationException: Could not instantiate class named NSLayoutConstraint


By default, when you create a new iOS project in Xcode 4.5, your storyboard or XIB is set to use Autolayout, which is a new feature in iOS 6.0. The NSLayoutConstraint class is part of the Autolayout system, and it doesn't exist in older versions of iOS.

If you want to deploy your app to an older version of iOS, you need to change your storyboard or XIB to not use Autolayout. It's a checkbox in the File Inspector:

turning off autolayout


Your Xib file (Interface builder file) contains AutoLayout elements, which iOS 5 does not support.

In Xcode, go to your .xib file(s), and for each one, turn off AutoLayout. There should be a checkbox on the left hand side saying "Use AutoLayout", uncheck it and try again. (This is under the first tab in the left hand side inspector, when you have File's owner) selected.


I stumbled into this error when I was working on an older project I wanted to update. I had selected the "Use Autolayout" checkbox to start working with constraints, but had forgotten to update my Deployment Target setting to iOS 6.