วิธีล้างแคชและล้างเป้าหมาย Xcode 4 และใหม่กว่าทั้งหมด


238

โจนาธานแนะนำที่นี่: Xcode รวมถึง. xib ไฟล์ที่ถูกลบไปแล้ว! การล้างเป้าหมายทั้งหมดและล้างแคชจะแก้ไขปัญหาด้วย Xcode รวมถึงไฟล์. xib ที่ถูกลบ แต่ฉันไม่สามารถหาวิธีล้างแคชใน Xcode 4 ได้

วิธีทำใน Xcode 4


นี่คือ [shell script solution] ของฉัน [1] ซึ่งลบข้อมูลที่ได้รับมาสำหรับทั้ง xCode 5 และ 6 [1]: stackoverflow.com/a/27977848/1231948
Sheamus

คำตอบ:


514

Command-Option-Shift-K เพื่อล้างโฟลเดอร์บิลด์ ยิ่งไปกว่านั้นให้ออกจาก Xcode และล้าง~ / Library / Developer / Xcode / DerivedDataด้วยตนเอง ลบเนื้อหาทั้งหมดเนื่องจากมีข้อผิดพลาดที่ Xcode จะเรียกใช้โครงการเก่าของคุณที่อยู่ในนั้น (Xcode 4.2 จะแสดงโฟลเดอร์ Derived Data: เลือก Window> Organizer และเปลี่ยนเป็นแท็บโปรเจ็กต์คลิกลูกศรขวาไปทางขวาของชื่อโฟลเดอร์ Derived Data)

ในเครื่องมือจำลองให้เลือก iOS Simulator> รีเซ็ตเนื้อหาและการตั้งค่า

ในที่สุดเพื่อความสมบูรณ์คุณสามารถลบเนื้อหาของ/ var / โฟลเดอร์ ; แคชบางอย่างเกิดขึ้นที่นั่นด้วย

คำเตือน: การลบ/ var / โฟลเดอร์อาจทำให้เกิดปัญหาและคุณอาจต้องซ่อมแซมหรือติดตั้งระบบปฏิบัติการใหม่หลังจากทำเช่นนั้น

แก้ไข: ฉันเพิ่งเรียนรู้ว่าถ้าคุณกลัวที่จะต่อสู้กับ/ var / โฟลเดอร์ /คุณสามารถใช้คำสั่งต่อไปนี้ใน Terminal เพื่อลบด้วยวิธีที่ตรงเป้าหมายมากขึ้น:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"

แก้ไข: สำหรับบางปัญหาสวิฟท์ที่เกี่ยวข้องกับฉันได้พบมันมีประโยชน์ในการลบ~ / Library / แคช / com.apple.dt.Xcode คุณสูญเสียมากเมื่อคุณทำเช่นชุดสำเนาเอกสารชุดเอกสารที่ดาวน์โหลดมา แต่ก็คุ้มค่า


6
ดีทำความสะอาดเส้นทาง: Library / Developer / Xcode / DerivedData + รีเซ็ตเนื้อหาและการตั้งค่าเครื่องมือจำลอง!
Tieme

10
เส้นทางดูเหมือนจะอยู่ในไดเรกทอรีบ้านของฉัน (note tilde): ~ / Library / Developer / Xcode / DerivedData บางทีนี่อาจจะเห็นได้ชัดสำหรับคนอื่น ๆ แต่ในกรณีที่คนอื่นมีปัญหา ...
Victor Van Hee

37
อืมการเป็นübern00bฉันลบ / var / db ที่ฉันพบบางสิ่งที่มาจาก Xcode / โครงการของฉัน นั่นทำให้ฉันต้องเสียเวลาห้าชั่วโมงในการทำ journalling ในระบบไฟล์การซ่อมแซมและติดตั้ง Lion เป็นต้น :-)
Jonas Byström

4
@ Jonas ฉันรู้สึกว่าถูกบังคับให้เพิ่มคำเตือนไปยังคำแนะนำ "ลบ / var / โฟลเดอร์" ไม่ใช่สำหรับมือใหม่!
LearnCocos2D

7
ไม่ได้เรียกใช้ RM -rf / var / โฟลเดอร์ที่มี sudo หรือคุณจะจบลงด้วยการซ่อมแซมตัวเอง :)
ซิปบี

68

Command-Option-Shift-K ควรทำเช่นนั้น หรือไปที่เมนูผลิตภัณฑ์กดปุ่มตัวเลือกตอนนี้ตัวเลือก "Clean" จะเปลี่ยนเป็น "Clean Build Folder ... " เลือกตัวเลือกนั้น


ไม่ดีเกินไป .. ฉันเพิ่งเปลี่ยนและเปลี่ยนชื่อไฟล์ xib และล้างแอพตามที่คุณพูด แต่มันก็ยังโหลดได้ดีโดยไม่มีข้อผิดพลาด
Tieme

2
ว้าวไม่เคยใหม่เกี่ยวกับเคล็ดลับปุ่ม alt นั้นสำหรับเมนู Mac OS X !!! ที่กำหนดความหมายของ "Alt" ernate จริงๆ
trusktr

19

นอกเหนือจากการทำสิ่งต่อไปนี้คุณอาจพบปัญหานี้หากไฟล์ Storyboard ของแอปของคุณถูกแปลเป็นภาษาท้องถิ่น ก่อนอื่นให้ทำดังนี้:

  • สร้างความสะอาด
  • รีเซ็ตเครื่องมือจำลอง
  • รีสตาร์ท Xcode
  • ลบDerivedDataโฟลเดอร์ของคุณใน~ / Library / Developer / Xcode / DerivedData
  • รีสตาร์ทคอมพิวเตอร์

สิ่งที่ใช้งานได้ในที่สุดสำหรับฉันคือการสร้างไฟล์การแปลสตอรีบอร์ดอีกครั้งและการลบการแปลภาษาอังกฤษ เพื่อโหลดสตริงสตอรี่บอร์ดของคุณดูคำตอบนี้ใน StackOverflow

ฉันสังเกตเห็นว่าส่วนที่ไม่ใช่ข้อความของ Storyboard ของฉันกำลังได้รับการอัปเดต แต่ไม่ใช่ข้อความที่แปลเป็นภาษาท้องถิ่น หากคุณมีการโลคัลไลเซชันในแอปของคุณฉันขอแนะนำให้ตรวจสอบเพื่อให้แน่ใจว่าการโลคัล.stringsไลซ์เซชันของคุณได้รับการอัปเดตแล้ว (แม้ว่าจะเป็นไฟล์)


2
การลบเนื้อหา (ไม่ใช่ทั้งโฟลเดอร์) ของ / var / โฟลเดอร์ก็ทำได้สำหรับฉัน! หากคุณกำลังมองหา /var/folders ... เลือกไปที่โฟลเดอร์จากเมนู Finder's Go และป้อน / var / เป็นที่ตั้งของโฟลเดอร์
แพทริเซีย

+1 บนคำสั่ง / var / โฟลเดอร์ ... การทำความสะอาดและลบ DerivedData ทำงานได้บางส่วน แต่ได้ทำการหลอกลวง
EeKay

1
1. ล้างบิลด์ 2. รีเซ็ตเครื่องมือจำลอง 3. รีสตาร์ท Xcode ซึ่งแก้ไขปัญหาของฉันได้
Alan Dong

คำเตือน! ระวังว่าการลบเนื้อหา/var/folders/อาจทำให้เกิดปัญหาร้ายแรงและอาจทำให้ต้องติดตั้ง OSx ใหม่ทั้งหมดจากคอนโซลการกู้คืน!
แมกนัส W

18

ฉันพบวิธีอื่นนอกเหนือจากคำสั่ง + ตัวเลือก + shift + K ใน XCode 4.2 จะมีออแกไนเซอร์ที่สามารถเปิดได้จากไอคอนด้านบนขวา คุณสามารถล้างข้อมูลที่เก็บถาวรทั้งหมดและบันทึกตัวเลือกโครงการได้จากที่นั่น สิ่งนี้ช่วยให้สถานการณ์ของฉัน (ฉันเห็นไฟล์ที่ลบเก่าใน mainBundle)


3
ใช่นั่นเป็นวิธีที่ง่ายกว่าการทำความสะอาด ~ / Library / Developer / Xcode / DerivedData ด้วยตนเอง
Tieme

10

ฉันดึงผมออกจากหัวเพราะคิดว่าฉันมีปัญหาเดียวกัน เมื่อสร้างแอพขึ้นมาฉันไม่ได้ผลลัพธ์เหมือนกันบน iPhone ของฉันเหมือนกับบนอุปกรณ์จำลอง

ปัญหาคือว่าฉันทำไฟล์ MainStoryboard.storyboard เวอร์ชันที่แปลแล้ว ดังนั้นเมื่อฉันรันแอพในโทรศัพท์ของฉันมันแสดงเวอร์ชั่นภาษาเดนมาร์ก ... และเครื่องมือจำลองแสดงเวอร์ชันภาษาอังกฤษ

ใช่ฉันใหม่! :)


2
ฉันมีปัญหาที่คล้ายกัน ไม่ command-option-shift-K ไปไม่มีประโยชน์ นำออก ... DerivedData ไม่มีวิธีแก้ไข กลับกลายเป็นว่าการเปลี่ยน XIB ระดับบนสุดเป็นการเปลี่ยนแปลงเวอร์ชันภาษาอังกฤษเท่านั้นและฉันกำลังทดสอบกับ XIB เวอร์ชันภาษาดัตช์ เฮ้อ ...
fishinear

1
นอกจากนี้โปรดทราบว่ามีหลายวิธีในการแปลแอปของคุณที่จะสร้างไฟล์ข้อความแยกกันสำหรับแต่ละภาษา ในกรณีเช่นนี้การเปลี่ยน. xib จะไม่ทำอะไรเลย
dandan78

7

ในการลบข้อมูลที่ได้รับทั้งหมดและโมดูลแคชที่/var/foldersใช้งานอยู่ให้ใช้ruby script ตัวนี้

derivedDataFolder = Dir.glob(Dir.home + "/Library/Developer/Xcode/DerivedData/*")
moduleCache = Dir.glob("/var/folders/**/com.apple.DeveloperTools*")
FileUtils.rm_rf derivedDataFolder + moduleCache

นี่เพิ่งแก้ไขfatal error: malformed or corrupted AST file: 'Unable to load module "/var/folders/ข้อผิดพลาดสำหรับฉัน


1
ข้อผิดพลาดที่ชัดเจนที่ทำให้เกิด "ข้อผิดพลาดร้ายแรง: ไฟล์ AST ที่มีรูปแบบไม่ถูกต้องหรือเสียหาย: 'ไม่สามารถโหลดโมดูล" และความล้มเหลวของวิธีแก้ปัญหาแบบอ่อนโยนที่ Xcode แนะนำยังคงเกิดขึ้นใน Xcode 6.1 และวิธีการออกจาก Xcode และล้างด้วยตนเอง ~ / Library / Developer / Xcode / DerivedData ด้วยตนเองยังคงทำงานได้ ฉันไม่จำเป็นต้องทำความสะอาดทุกอย่างในนั้น เพียงสองโฟลเดอร์ย่อย: ModuleCache และโฟลเดอร์ย่อยที่มีชื่อเกี่ยวข้องกับโครงการปัญหา
Jerry Krinock

5

ฉันมีปัญหาบางอย่างกับ Xcode 5.1 ล้มเหลวเมื่อฉันเปิดหน้าต่าง doc

ฉันไม่แน่ใจเกี่ยวกับสาเหตุของมันเพราะฉันกำลังปรับปรุง docsets ในขณะที่ฉันเปิดหน้าต่าง

ทีนี้ใน Xcode 5 ตอนนี้ไดเรกทอรีโมดูลอยู่ในโฟลเดอร์ data ที่ได้มาซึ่งฉันด้วยเหตุผลที่ชัดเจนไม่ได้ลบ ฉันลบเนื้อหาของ~ / Library / Developer / Xcode / DerivedData / ModuleCacheและ~ / Library / Preferences / com.apple.Xcode.plistและทุกอย่างดูเหมือนจะทำงานหลังจากฉันรีสตาร์ท Xcode


1

เมื่อใช้ "Data Model" มีตัวเลือกในการตรวจสอบเพื่อสร้างคลาสสำหรับฉันนี่เป็นกรณีที่มีคลาสที่มีชื่อที่มีอยู่แล้ว

Codegen: แก้ไขให้ฉัน

ป้อนคำอธิบายรูปภาพที่นี่



0

คุณต้องระวังเกี่ยวกับไฟล์ xib ฉันลองทั้งหมดข้างต้นและไม่มีอะไรทำงานให้ฉัน ฉันใช้ UIButtons แบบกำหนดเองที่กำหนดไว้ใน xib และตระหนักว่ามันอาจเกี่ยวข้องกับความจริงที่ว่าฉันได้กำหนดคุณลักษณะไว้ซึ่งไม่มีการเปลี่ยนแปลงทางโปรแกรม หากคุณกำหนดรูปภาพหรือข้อความไว้ให้ลบออก เมื่อฉันทำการเปลี่ยนแปลงเชิงโปรแกรมของฉันเริ่มมีผล


0

นี่คือโซลูชันเชลล์สคริปต์ของฉันซึ่งจะลบข้อมูลที่ได้รับมาและล้างเนื้อหาแคชของโครงการสำหรับ Xcode 4, 5 และ 6

บางครั้งก็แค่เรียก rm -rf ในไดเรกทอรี Derived Data ทิ้งไฟล์เอ้อระเหยหรือสอง แต่สคริปต์ของฉันลูปจนกว่าไฟล์ทั้งหมดจะถูกลบ


0

ฉันพยายามเกือบทุกอย่าง แต่ไม่สามารถช่วยได้สิ่งที่ช่วยฉันคือปิดการใช้งาน SIP (การป้องกันการรวมระบบ) ไม่ทำงานฉันไม่รู้ว่าจะเกิดอะไรขึ้นเมื่อใดและอย่างไรไฟล์ระบบสับสนอยู่ที่ไหนและทำให้สิ่งนี้ ... แม้ว่าอาจมีความเสี่ยง เพื่อปิดการใช้งานนี้อย่างเห็นได้ชัด

นี่คือวิธี

1. เปิดเครื่อง Mac ของคุณและกดปุ่ม [command] + [R] ค้างไว้เพื่อเข้าถึง Recovery Partition

2. จาก Recovery Partition คลิก Utilities จากแถบเมนูจากนั้นเลือก Terminal

3. ป้อนคำสั่งต่อไปนี้ลงในเทอร์มินัลแล้วกด Enter เพื่อดำเนินการ: csrutil ปิดการใช้งาน

4. เมื่อคำสั่งดำเนินการแล้วให้ออกจาก Terminal และรีบูต Mac เมื่อคุณกลับเข้าสู่ OS X SIP จะถูกปิดการใช้งาน


1
ฟังดูมีความเสี่ยงแน่นอน SIP ทำอะไร
Tieme

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