ฉันพบว่าคำตอบข้างต้นมีประโยชน์จริงๆโดยเฉพาะคำตอบของ Nick Lockwood
ฉันเพิ่งเปลี่ยนชื่อสองสามโฟลเดอร์ใน Xcode 8 และพบปัญหาอีกสองอย่าง: A) "หายไปจากข้อผิดพลาดในการคัดลอกที่ใช้งานได้"
B) ข้อมูลหลักขัดข้องเกิดปัญหาหลักของข้อมูล
วิธีแก้ไขปัญหาทั้งสองนี้:
A) " หายไปจากข้อผิดพลาดในการคัดลอกการทำงาน "
ฉันพบว่าคำตอบด้านล่างมีประโยชน์มาก: การอัปเกรด Swift 3 / Xcode 8 - ไฟล์ DerivedData 100 รายการหายไปจากข้อผิดพลาดในการคัดลอกที่ใช้งานได้
โดยทั่วไป Xcode 8 มีการควบคุมแหล่งที่มาอย่างเข้มงวดซึ่งอาจนำไปสู่ข้อผิดพลาดข้างต้น คุณต้อง:
- ล้างข้อมูลที่ได้รับ Xcode
- ไปที่ Source Control แล้วคลิก Refresh Status
- ไปที่ Source Control แล้วคลิก Commit; เลือกไฟล์ทั้งหมดบนแถบด้านข้างซ้ายของเมนูคอมมิตเมื่อคอมมิต (คลิกขวา -> เลือกทั้งหมด)
- คุณอาจได้รับข้อผิดพลาด
- ปิดเมนู Commit
- รีเฟรชสถานะ
- ปิดโครงการของคุณโดยออกจาก Xcode
- เปิดโปรเจ็กต์ของคุณใหม่สถานะรีเฟรชยืนยันอีกครั้ง
- เวลานี้การคอมมิตควรใช้งานได้
- คลิก Project -> Clean
ฉันสมมติว่าคุณได้เปิดใช้งาน Source Control แล้ว หากคุณไม่ได้ทำหรือหากคุณติดขัดในการปฏิบัติตามคำแนะนำของฉันเพียงทำตามคำแนะนำโดยละเอียดเพิ่มเติมในลิงก์ที่ให้ไว้
B) ข้อมูลหลักขัดข้อง
การเปลี่ยนชื่อโฟลเดอร์บางครั้งจะทำให้ข้อมูลหลักเสียหาย มีสาเหตุที่เป็นไปได้หลายประการที่เป็นเช่นนั้นและด้านล่างนี้คือการแก้ไขที่ฉันสามารถแนะนำได้:
ชื่อรุ่นAppDelegateไม่ถูกต้อง นี่เป็นกรณีของฉัน ไปที่ AppDelegate let container = NSPersistentContainer(name: "YOUR CORE DATA MODEL NAME")
ของคุณและหา ตรวจสอบให้แน่ใจว่าชื่อถูกต้อง
ในอนาคต (หลายปีหลังจากโพสต์นี้เมื่อ Apple เปลี่ยน Core Data อีกครั้ง) หรือหากคุณใช้ Core Data รุ่นเก่ากว่าโปรดดู AppDelegate อย่างรอบคอบ อาจมีบางอย่างที่น่าสนใจที่รบกวนข้อมูลหลักของคุณ
ชื่อรุ่นที่ไม่ถูกต้องในxcdatamodeld ไปที่ Finder และเปิด. xcdatamodeld ในโปรแกรมแก้ไขข้อความ
ตรวจสอบสิ่งต่อไปนี้:
<plist version="1.0">
<dict>
<key>_XCCurrentVersionName</key>
<string>YOUR CORE DATA MODEL NAME.xcdatamodel</string> <-- Make sure this is correct.
</dict>
</plist>
รายละเอียดเพิ่มเติมที่นี่: ไฟล์โมเดลข้อมูลหลักไม่โหลดเมื่อเปลี่ยนชื่อ
- หากสองสิ่งข้างต้นใช้ไม่ได้ผลให้ลอง 1) ลบเอนทิตีของคุณแล้วเพิ่มเอนทิตีอื่นที่เหมือนกันหรือ 2) ลบ xcdatamodeld ของคุณแล้วเพิ่มโมเดลข้อมูลอื่นที่เหมือนกัน (และตรวจสอบให้แน่ใจว่าชื่อของ xcdatamodeld ใหม่ตรงกัน สิ่งที่อยู่ใน AppDelegate ของคุณและส่วนที่เหลือของรหัสของคุณ) อย่าทำเช่นนี้กับแอปที่ใช้งานจริง - หรือหากคุณทำเช่นนี้ตรวจสอบให้แน่ใจว่าได้ย้ายข้อมูลหลักของคุณอย่างถูกต้องในขณะที่ดำเนินการดังกล่าว