วิธีการลบรุ่นตัวแบบข้อมูลเก่า / ไม่ได้ใช้ใน Xcode


163

ฉันจะลบตัวแบบข้อมูลเก่าใน Xcode ได้อย่างไร ตัวเลือกถูกปิดใช้งานบนเมนู (โมเดลที่ฉันต้องการลบยังไม่ได้เผยแพร่สู่สาธารณะ - เป็นโมเดลการพัฒนาชั่วคราว)


คุณหมายถึงตัวเลือก "ลบ" ภายใต้เมนู "แก้ไข" ถูกปิดใช้งาน (ในขณะที่ไฟล์ตัวแบบข้อมูลเก่าของคุณถูกเลือกในตัวตรวจสอบไฟล์)? หรือคุณหมายถึงอย่างอื่นโดยสิ้นเชิง?
Michael Dautermann

ใช่ตัวเลือกลบใต้เมนูแก้ไขและใต้เมนูคลิกขวาที่ควบคุม (และเมนูที่ฉันสามารถหาได้) ถูกปิดใช้งาน ฉันรู้ว่าบางคนกำลังไป xcode ก่อนหน้าเพื่อลบเวอร์ชันเก่า / ไม่ได้ใช้ แต่ฉันไม่ได้ติดตั้ง
SAHM

Michael คุณสามารถทำสิ่งนี้ใน xCode 4 ได้ไหม
SAHM

ใช่ ... ฉันไม่เคยเห็นว่าตัวเลือกเมนู "ลบ" ถูกปิดใช้งานสำหรับโปรเจ็กต์ XCode 4 ของฉัน
Michael Dautermann

Sepcifically สำหรับ xcdatamodel หรือไม่ คนอื่นมีปัญหาเดียวกันกับการลบ xcdatamodels XCode 4 .. ฉันไม่เห็นวิธีการโพสต์
SAHM

คำตอบ:


374

มันเป็นแฮ็ค แต่มันใช้ได้กับฉัน:

  1. ตั้งค่ารุ่นปัจจุบันของรุ่นใน Xcode เป็นรุ่นที่คุณต้องการเก็บไว้
  2. ลบ. xcdatamodeld ออกจากโครงการของคุณ (คลิกขวา -> ลบ -> ลบการอ้างอิงเท่านั้น )
  3. แสดงเนื้อหาของแพ็คเกจ. xcdatamodeld ใน Finder (คลิกขวา -> แสดงเนื้อหาแพ็คเกจ)
  4. ลบไฟล์. xcdatamodel ที่คุณไม่ต้องการอีกต่อไป
  5. เพิ่มไฟล์. xcdatamodeld อีกครั้งในโครงการของคุณ

สิ่งนี้ทำให้ไม่จำเป็นต้องแก้ไขไฟล์ข้อมูลเมตาของโครงการด้วยตนเอง


2
ฉันลองใช้เทคนิคนี้และพบว่าเนื่องจากวิธีการตั้งชื่อรุ่นรุ่นของฉันรุ่นรุ่นได้รับการจัดเรียงใหม่อย่างไม่ถูกต้องและเลือกรุ่นเริ่มต้นที่ไม่ถูกต้องเมื่อฉันเพิ่มไฟล์ xcdatamodel อีกครั้งในโครงการ อาจเป็นเพราะฉันมีรุ่นมากถึง 38 รุ่นและฉันไม่ได้เปลี่ยนชื่อรุ่นเริ่มต้นดังนั้นรุ่นจึงมีชื่อว่า "MY_APP 37.xcdatamodel" ฉันต้องการที่จะลบ 38. ในการนำเข้ามันถูกดึงตามลำดับคำซึ่งหมายถึง "MY_APP 10.xcdatamodel" เป็นลำดับแรกและเลือกเป็นค่าเริ่มต้น ไม่เหมาะในกรณีของฉัน
Mike

1
ไมค์ - ปัญหาเดียวกันสำหรับฉันแม้ว่าฉันจะสามารถจัดลำดับใหม่ใน project.pbxproj ในโปรแกรมแก้ไขข้อความโดยไม่มีละครหลัก ยังไม่เหมาะ
Ian Kershaw

1
สิ่งนี้ไม่ทำงานกับ Xcode 5.1.1 ก่อนหน้านี้ด้วยการเปลี่ยนแปลงโมเดลขนาดเล็กจำนวนมากและหมายเลขรุ่นที่เพิ่มขึ้น อย่างไรก็ตามหลังจากพยายามลบโมเดล "การพัฒนาอย่างเดียว" ที่ไม่เกี่ยวข้องทั้งหมดโดยใช้วิธีการนี้ฉันได้รับข้อผิดพลาด: "ข้อผิดพลาด: ไม่พบหรืออนุมานโมเดลการแมปสำหรับการย้ายข้อมูลโดยอัตโนมัติ"
Dalmazio

1
ใน 6.4 ไม่มีตัวเลือกในการลบการอ้างอิง มันเพิ่งถูกลบ ส่วนที่เหลือของขั้นตอนที่ดูเหมือนจะทำงาน
noobsmcgoobs

1
ดูเหมือนว่าจะทำงานใน Xcode 10.2.1 การย้ายข้อมูลของฉันคือการเปลี่ยนชื่อแอตทริบิวต์
Gavin

35

ฉันเพิ่งพบว่าจำเป็นต้องทำเช่นนี้ ฉันสร้างรุ่นรุ่นใหม่จากนั้นฉันก็รู้ว่าฉันไม่ต้องการมันเลย ฉันประหลาดใจที่พบว่าไม่มีวิธีการลบมัน (ที่ฉันหาได้) จาก Xcode ยังคงเพื่อลบมันฉันทำต่อไปนี้:

ครั้งแรกฉันทำให้แน่ใจว่าไม่ใช่รุ่นปัจจุบันของฉัน จากนั้นฉันไปที่ Finder และพบไฟล์ * .xcdatamodeld ของฉัน คลิกขวาและแสดงเนื้อหาแพ็คเกจที่ ในนั้นคุณจะพบไฟล์รุ่นจริงและสามารถลบได้

สิ่งนี้ยังคงไม่ลบออกจาก Xcode และมันจะแสดงเป็นสีแดงในไฟล์และกลุ่ม หากต้องการหยุดสิ่งนี้ให้กลับไปที่ Finder และแสดงเนื้อหาแพ็คเกจในไฟล์ * .xcodeproj หลักของคุณ (คุณอาจต้องการให้แน่ใจว่าคุณมีการสำรองข้อมูลนี้ก่อน) ในนั้นมีการเปิดและแก้ไข project.pbxproj ทำการค้นหาในชื่อรุ่นของคุณในกรณีของฉัน "ช่วงเวลา 8" สำหรับฉันมันปรากฏในสองบรรทัดแยกกัน ฉันลบบรรทัดเหล่านี้และตอนนี้มันถูกลบออกอย่างสมบูรณ์จาก Xcode


1
@Daniel_Wood ใช่ฉันได้พบวิธีทำด้วยตนเองเช่นกัน แต่ระวัง มันอาจทำให้เกิดปัญหาบางอย่างลงในบรรทัด ... ฉันต้องทำซ้ำหลาย ๆ ครั้งมันก็จบลงด้วยการสลับรุ่นที่ใช้งานและไม่ทำงานไปรอบ ๆ บางครั้งแล้วเมื่อคุณรีเซ็ตเวอร์ชั่นที่ถูกต้องมันไม่ย้ายไป ด้านบนของรายการ (บางครั้ง) ซึ่งทำให้เกิดปัญหามากขึ้น! ขอบคุณมากสำหรับการป้อนข้อมูลแม้ว่า ดูเหมือนว่าแปลกที่พวกเขาจะลบความสามารถนี้ - เราไม่ควรเข้าไปในไฟล์. xcodeproj!
SAHM

2

สิ่งนี้ใช้ได้กับฉันใน XCode 10.3 โดยไม่มีปัญหาการสั่งซื้อเมื่อลบโมเดลทั้งหมดและเพิ่มอีกครั้ง:

  1. เลือกรุ่นของรุ่นอื่นที่ไม่ใช่รุ่นที่คุณต้องการลบ
  2. จาก XCode ให้คลิกขวาที่ไฟล์. xcdatamodeld และเลือก 'แสดงในตัวค้นหา'
  3. ปิด XCode
  4. ในตัวค้นหาคลิกขวาที่ไฟล์เดียวกันและเลือก 'แสดงเนื้อหาแพ็คเกจ'
  5. จดชื่อรุ่นที่คุณต้องการลบจากนั้นจาก Finder ให้ลบออก
  6. ยังอยู่ใน Finder ให้นำทางไปยังไฟล์โครงการ (.xcodeproj)
  7. คลิกขวาและเปิดด้วยAtomหรือโปรแกรมแก้ไขอื่น ๆ
  8. จากบานหน้าต่าง 'โครงการ' เปิดไฟล์ project.pbxproj
  9. ลบบรรทัดทั้งหมดที่มีชื่อรุ่นที่คุณลบออก (ตัวอย่าง: "ABC 17.xcdatamodel") คุณจะพบสองบรรทัดคล้ายกับที่แสดงต่อไปนี้:

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * / = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = " ABC 17.xcdatamodel "; sourceTree = ""; };

    9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /,

    หมายเหตุหากคุณพบบรรทัดที่สามมันจะเป็นดังนี้:

    currentVersion = 9D88880323C545B800A789B9 / * ABC 17.xcdatamodel * /;

    นั่นหมายความว่าเป็นรุ่นที่เลือกไว้ในปัจจุบัน อย่าลบบรรทัดนี้ เพียงแค่เปลี่ยนข้อความเป็นรุ่นอื่น

  10. เปิด XCode อีกครั้ง


-4

คำตอบของฉันไม่ใช่ปัญหาเฉพาะเลย แต่ก็รวดเร็วและใช้งานได้ สำหรับผู้ที่ใช้คอมไพล์ คุณสามารถละทิ้งการเปลี่ยนแปลงที่ไม่มีการกำหนดสถานะได้

git stash save --keep-index

จากนั้นคุณสามารถวางที่ซ่อนไว้ด้วยgit stash dropคำสั่งหากคุณต้องการ

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