NSInvalidUnarchiveOperationException: ไม่สามารถสร้างอินสแตนซ์ของคลาสที่ชื่อว่า NSLayoutConstraint


165

ฉันใหม่มากในการนี้. ฉันทำตามขั้นตอนการสอนของ Apple สำหรับโครงการ iPhone "HelloWorld" ฉันขับมันในเครื่องจำลอง iPhone 5.0 และมันพัง:

2012-11-02 14: 46: 06.782 HelloWorld [9880: c07] * แอปสิ้นสุดเนื่องจากข้อยกเว้นที่ไม่ได้ตรวจสอบ 'NSInvalidUnarchiveOperationException' เหตุผล: 'ไม่สามารถสร้างอินสแตนซ์ของคลาสชื่อ NSLayoutConstraint' * 0xea2d0a 0xea2d0a 0xea2d0a 0xea2d0a 0xea2d0a 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) ยุติเรียกว่าการขว้างปายกเว้น (lldb)

มีคนช่วยบอกฉันทีว่ามีอะไรผิดพลาดได้บ้าง? ฉันใช้ Xcode 4.5


คุณต้องปิดคุณสมบัติ Autolayout ใน xib / storyboard
beryllium

คำตอบ:


575

ตามค่าเริ่มต้นเมื่อคุณสร้างโครงการ iOS ใหม่ใน Xcode 4.5 กระดานเรื่องราวหรือ XIB ของคุณจะถูกตั้งค่าให้ใช้ Autolayout ซึ่งเป็นคุณลักษณะใหม่ใน iOS 6.0 NSLayoutConstraintระดับเป็นส่วนหนึ่งของระบบ autolayout และมันไม่ได้อยู่ใน iOS เวอร์ชันเก่า

หากคุณต้องการปรับใช้แอพของคุณเป็น iOS เวอร์ชันเก่าคุณต้องเปลี่ยนสตอรี่บอร์ดหรือ XIB ของคุณเพื่อไม่ให้ใช้ Autolayout เป็นช่องทำเครื่องหมายในตัวตรวจสอบไฟล์:

ปิดการจ่ายอัตโนมัติ


29
ฉันใช้ ScreenFlow สำหรับการจับภาพและการครอบตัด ฉันใช้ Photoshop เพื่อเปลี่ยน. mov ให้เป็น. gif
ปล้น mayoff

มันใช้กับ xib ด้วย!
virata

การทำเช่นนี้จะปิดการใช้งานมุมมองการหมุนจากแนวตั้งเป็นแนวนอนแม้จะมีวิธีการใช้งาน คุณแก้ปัญหาอย่างไรถ้าคุณยังต้องการให้มีการหมุนเวียน ขอบคุณล่วงหน้าและ ... gif ที่ดี ^^
aGit

@robmayoff ขอบคุณสำหรับ gif และคำตอบที่สมบูรณ์แบบ ปัญหาของฉันได้รับการแก้ไขในไม่กี่วินาที :)
ishhhh

ฉันชอบสิ่งนี้ดังนั้นฉันจึงสร้างของตัวเองสำหรับจุดพักยกเว้น rsaunders.co.uk/2013/06/add-exception-breakpoint.html
Robert

21

ไฟล์ Xib ของคุณ (ไฟล์เครื่องมือสร้างส่วนต่อประสาน) ประกอบด้วยองค์ประกอบ AutoLayout ซึ่ง iOS 5 ไม่รองรับ

ใน Xcode ให้ไปที่ไฟล์. xib ของคุณและสำหรับแต่ละไฟล์ให้ปิด AutoLayout ควรมีช่องทำเครื่องหมายทางด้านซ้ายมือบอกว่า "ใช้ AutoLayout" ยกเลิกการเลือกและลองอีกครั้ง (นี่คือภายใต้แท็บแรกในตัวตรวจสอบด้านซ้ายมือเมื่อคุณมีเจ้าของไฟล์) เลือกไว้


8

ฉันพบข้อผิดพลาดนี้เมื่อฉันทำงานโครงการเก่าที่ฉันต้องการอัปเดต ฉันเลือกช่องทำเครื่องหมาย "ใช้การชำระอัตโนมัติ" เพื่อเริ่มทำงานกับข้อ จำกัด แต่ลืมปรับปรุงการตั้งค่าเป้าหมายการปรับใช้เป็น iOS 6


7

คุณต้องเปิดใช้งานใน iPhone 6.0 simulator ข้อผิดพลาดของคุณ:

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

แนะนำให้คุณใช้การชำระอัตโนมัติอัตโนมัติซึ่งใช้งานได้กับ iOS 6 เท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.