Swift Xcode Index ค้างหรือช้า


101

บางทีนี่อาจเป็นเพียงฉันที่ประสบกับ "คุณลักษณะ" ที่น่ารำคาญ:

หลังจากอัปเกรดจาก Xcode 6.0.1 เป็น Xcode 6.1 สิ่งต่างๆก็เปลี่ยนไป Xcode 6.1 เป็นดัชนีตลอดไปสำหรับโครงการหรือรวบรวมไฟล์ต้นฉบับ โครงการไม่ใหญ่โต มันมีไฟล์ Swift จำนวนมากและ AWS SDK 2.0 Cocoapods ในพื้นที่ทำงาน ฉันไม่คิดว่ามันควรจะป้องกันไม่ให้ดัชนีและคอมไพล์ทั้งหมดราบรื่น ฉันลองใช้ aws-sdk-ios-samples เพียงเพื่อดูว่า Xcode 6.1 ทำงานอย่างไรกับพวกเขาและจบลงด้วยการรอคอยตลอดไป

ฉันได้ลองวิธีแก้ไขอะไรบ้าง:

  1. การลบ "ข้อมูลที่ได้มา" ใน Organizer และเปิดใหม่และพื้นที่ทำงาน (ไม่สามารถแก้ไขได้)
  2. "แสดงเนื้อหาแพ็กเกจ" บนไฟล์. xcodeproj และลบ. xcworkspace เหมือนใน ( Xcode 4 - ประสิทธิภาพช้า )

ไม่ได้ผลเลยน่าเสียดาย

ปล. ฉันควรลองสร้างโครงการใหม่หรือไม่ การตั้งค่าคอมพิวเตอร์ของฉัน: MacBook Pro (Retina 13 นิ้วกลางปี ​​2014) หน่วยความจำ 8 GB 1600 MHz DDR3 พร้อม Yosemite (ฉันคิดว่าเพียงพอสำหรับการดำเนินโครงการเล็ก ๆ นี้)


ประสบการณ์ที่คล้ายกัน? ใช่: Xcode beta 3 Swift ทำดัชนีตลอดไป
zisoft

2
ฉันจะไม่ช่วยอะไรมาก แต่สิ่งที่ฉันทำคือ ... ฉันแค่ปล่อยให้ xcode 6.x ใช้เวลา ถ้าฉันสู้กับมันมันจะทำให้ฉันเสียหายครั้งใหญ่ดังนั้นฉันแค่รอจนกว่า xcode 6 จะเริ่ม ฉันปล่อยให้มันทำงานดัชนีโง่ ๆ จากนั้นฉันเริ่มโปรแกรมจำลอง iOS แยกกันและรอจนกว่ากระดานกระโดดน้ำโง่ ๆ จะปรากฏขึ้น ในที่สุดเมื่อฉันดำเนินโครงการฉันมองข้ามความจริงที่ว่าหลาย ๆ ครั้งที่ Indexing บอกว่า "หยุดชั่วคราว" และฉันอธิษฐานให้ <# godObject #> ดื่มกาแฟและพยายามเข้าสู่โหมดเซน แต่ * ถอนหายใจ * มันหยาบ: / และฉันชอบ xcode 5.1.1 จริงๆ: |
staticVoidMan

คำตอบนี้ใช้ได้ผลสำหรับฉัน: stackoverflow.com/a/33395844/242933
ma11hew28

คำตอบ:


72

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

// This causes indexing/building to hang...
var test = [ [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ],
             [ "a": false, "b": "c" ] ]

// This works fine.
var test = [ [ "a": false, "b": "c" ] ]
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])
test.append([ "a": false, "b": "c" ])

นอกจากนี้สิ่งที่คุ้มค่ารายการที่ 6 ในอาร์เรย์นี้คือสิ่งที่ทำให้เกิดปัญหาสำหรับฉัน ห้าทำงานได้ดี


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

แก้ไขให้ฉันโดยไม่มีพจนานุกรมที่เกี่ยวข้อง เพียงอาร์เรย์ของสิ่งทอที่ใช้ได้กับ 8 องค์ประกอบในการประกาศ ต้องเปลี่ยนกลับเพื่อต่อท้ายด้วย 11 องค์ประกอบ ไม่ต้องกังวลกับการหาจุดแตกหักที่แน่นอน แต่สร้างได้เร็วขึ้น 10 เท่า Xcode เวอร์ชัน 6.1.1 (6A2008a) บน Mavericks
Josh

ฉันประสบปัญหากับ 6 องค์ประกอบเช่นกัน 5 ก็สบายดี
Justin Lau

นี่คือปัญหา XCode หรือปัญหาคอมไพเลอร์?
Sljux

4
ฉันพบสิ่งนี้ใน Xcode 7.3 ด้วยอาร์เรย์ลิเทอรัล 229 รายการ แทนที่จะทำลายมันฉันเพิ่มการประกาศประเภทแทนที่จะให้ Swift อนุมานประเภท หลังจากที่ฉันทำมันได้ผล
Brigham

34

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

  1. เปิดไฟล์ / ค่ากำหนดใน Xcode

  2. คลิกที่สถานที่ทางขวาสุดของหน้าต่างป๊อปอัป

  3. คลิกที่ไอคอนลูกศรเล็ก ๆ ถัดจาก "/Users/Mac/Library/Developer/Xcode/DerivedData".... จะนำคุณไปยังโฟลเดอร์ Xcode ที่มีโฟลเดอร์ DerivedData (ซึ่งมีข้อมูลที่ได้รับทั้งหมดจากโครงการก่อนหน้าของคุณ .)

  4. ลบโฟลเดอร์ DerivedData


1
@TravisM. ทำตามขั้นตอนหรือไม่ ถ้าคุณไปที่ Window, Organizer, Projects, Delete Derived Data ก็จะใช้ไม่ได้ คุณต้องผ่านการตั้งค่า
ericgu

@ericgu ใช่ แต่มันไม่ได้ผล ฉันได้แก้ไขปัญหาของฉันแล้ว แต่มันเกี่ยวข้องกับการเริ่มต้นพจนานุกรมด้วยข้อมูลที่เข้ารหัสในภาพเดียว เมื่อฉันย้ายรหัสเพื่อเพิ่มข้อมูลฮาร์ดโค้ดทีละแถวปัญหาการค้าง / ช้าจะหายไปทันที
Travis M.

โฟลเดอร์ที่ ~ / Library / Developer / Xcode / DerivedData / บนเครื่องของฉัน คุณสามารถค้นหาได้โดยไปที่ Window> Projects ใน Xcode
Suragch

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

11

คุณใช้ CocoaPods หรือไม่? ฉันพบปัญหาเดียวกันก่อนหน้านี้ในวันนี้ (ใช้ xCode 6.1.1)

เพื่อแก้ไขปัญหาให้ฉันลบทุกอย่างใน~/Library/Developer/Xcode/DerivedDataที่โฟลเดอร์ในไดเรกทอรีโครงการของฉันและPods<project>.xcworkspace

จากนั้นฉันก็เปิดเทอร์มินัลนำทางไปยังไดเรกทอรีโครงการของฉันแล้วรันpod installอีกครั้ง


1
ใช่ฉันทำ. ตอนนี้ Xcode ทำงานได้ดี แต่ในบางครั้งก็ยังทำให้เกิดข้อผิดพลาดของ sourcekit crash วิธีแก้ปัญหาของฉันคือการลบโฟลเดอร์ข้อมูลที่ได้รับ
leonard

ดีใจที่เห็นว่าสิ่งนี้ใช้ได้ผลกับคนอื่นด้วย :) ดูเหมือนว่า xCode กำลังพยายามจัดทำดัชนี CocoaPod Libraries และติดอยู่ที่ไหนสักแห่ง
Michael Schinis

1
การลบโฟลเดอร์ Pods และไฟล์ <project> .xcworkspace แล้วเรียกใช้ pod install อีกครั้งก็ใช้งานได้
KML

9

มีปัญหาเดียวกันในวันนี้ Xcode 6.3.2 โครงการ Swift ขนาดกลาง จนถึงจุดหนึ่งมันเริ่มสร้างดัชนีและจะไม่เสร็จสิ้นการจัดทำดัชนี รหัสที่ทำให้เกิดสิ่งนี้คือพจนานุกรมประเภท [String: [String]] ดังนั้นคำสั่งสตริงคีย์ที่มีอาร์เรย์สตริงเป็นค่า ฉันมีสองสิ่งเหล่านี้พร้อมคีย์จาก A ถึง Z และแต่ละรายการใน 26 รายการเหล่านี้มีอาร์เรย์สตริงที่มี 5 ถึง 10 สตริง

การล้างข้อมูลที่ได้รับไม่ได้ช่วยอะไร การแสดงความคิดเห็นเท่านั้นที่ทำให้มันกลับมาอีกครั้ง

จริงๆแล้วนี่มันไร้สาระ! Apple ต้องแก้ไข Xcode! มันช้าอย่างมากเมื่อรวบรวมโปรเจ็กต์ Swift แต่ข้อบกพร่องเช่นนี้เป็นการแสดง ฉันไม่สามารถทำงานได้อย่างถูกต้องกับสิ่งนี้!


6

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

// instead of this, which freezes indexing
let keys = [keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM]    

// and instead of this, which is ugly & lengthy
var keys = [KeyboardKey]()
keys.append(keyQ)
keys.append(keyW)
...
keys.append(keyM)

// use this:
var keys = [KeyboardKey]()
keys.appendContentsOf([keyQ, keyW, keyE, keyR, keyT, keyY, ... keyM])

1
ว้าว ... ฉันมีปัญหาเดียวกันแน่นอน ขอบคุณ! ฉันรายงานว่าเป็นข้อบกพร่องของ Apple การทำตามที่คุณบอกไม่ได้ผลสำหรับฉัน ฉันต้องแยกอาร์เรย์แบบยาวของฉันออกเป็นอาร์เรย์ขนาดเล็กที่มีองค์ประกอบห้าหรือน้อยกว่านั้น
ma11hew28

5

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

ทำให้โลกแห่งการพัฒนาเป็นที่โปรดปรานของแอปเปิลและทำให้คอมไพเลอร์ที่รวดเร็วของคุณเป็นโอเพ่นซอร์สดังนั้นเราจึงไม่ถูกขัดขวางโดยความไร้ความสามารถของคุณ


3

ฉันใช้ Xcode เวอร์ชัน 7.3 (7D175)

ฉันคิดว่าฉันอาจพบปัญหาพื้นฐานแล้ว มีสองกรณีที่ฉันติดอยู่ในขั้นตอนการจัดทำดัชนี:

  • ฉันสร้างการปิดที่ฉันกำหนดให้กับตัวแปรและละเว้นลายเซ็นประเภท ฉันคิดว่า xcode มีปัญหากับขั้นตอนการอนุมานประเภทนั้น ถ้าฉันจำไม่ผิดหนึ่งในอาร์กิวเมนต์คือ CGPoint ซึ่งมีตัวสร้างที่โอเวอร์โหลด สมมติฐานของฉันคือมีความเป็นไปได้มากเกินไปในสิ่งที่การปิดของฉันอาจยอมรับว่าเป็นข้อโต้แย้ง

  • ฉันปรับโครงสร้างวิธีการจากโรงงานเพื่อแทนที่จะส่งคืนอินสแตนซ์ประเภทเดียวมันสามารถส่งคืนอินสแตนซ์หลายประเภทด้วยคลาสพื้นฐานทั่วไป ดูเหมือนว่าที่ใดก็ตามที่ฉันใช้วิธีการจากโรงงานฉันต้องส่งออบเจ็กต์ผลลัพธ์ไปยังประเภทเฉพาะ (ไม่ว่าจะด้วย as? หรือโดยการกำหนดให้กับตัวแปรที่ยอมรับประเภทเฉพาะ) อีกครั้งขั้นตอนการอนุมานประเภทดูเหมือนจะเสีย

ดูเหมือนว่าจะเกิดขึ้นกับการประกาศพจนานุกรมที่กล่าวถึงโดยบุคคลก่อนหน้านี้ ฉันยื่นรายงานข้อบกพร่องกับ apple


2

ฉันประสบปัญหาเดียวกันนี้หลังจากอัปเกรดเป็น 6.1 Xcode จะติดขัดในการรวบรวมหรือจัดทำดัชนีโดยไม่ต้องสร้างข้อความแสดงข้อผิดพลาดเฉพาะ

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

var a = "Hello"
var b = " "
var c = "World"
var d = "!"
var partA = a + b
var partB = c + d
var result = partA + partB

ฉันได้แนวคิดนี้จากการได้รับข้อผิดพลาดต่อไปนี้หลายครั้งใน Xcode เวอร์ชันก่อนหน้า "นิพจน์ซับซ้อนเกินกว่าจะแก้ไขได้ในเวลาอันสมควรลองแยกนิพจน์ออกเป็นนิพจน์ย่อยที่แตกต่างกัน"

หวังว่านี่จะช่วยได้


ใช่ขอบคุณจริงๆฉันรับข้อเสนอแนะประเภทนี้ และฉันยังลดความยาวของไฟล์หนึ่งไฟล์จาก 1500 บรรทัดเหลือประมาณ 1200 และแน่นอนว่าฉันสร้างโปรเจ็กต์ใหม่และนำเข้าไฟล์ทั้งหมดทีละไฟล์ แล้วในที่สุดมันก็กลับมา ไม่แน่ใจจริงๆว่าคนไหนคือผู้กอบกู้ขั้นสูงสุด
leonard

การแยกนิพจน์ยาว ๆ ใน Swift เป็นเคล็ดลับสำหรับฉัน
MandisaW

2

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

ฉันพบวิธีแก้ปัญหาที่เหมาะกับฉันฉันได้เปิดโครงการด้วย Xcode เวอร์ชัน 6.1 (6A1030) ที่เก่ากว่าซึ่งไม่มีปัญหาในการจัดทำดัชนีจากนั้นกลับไปที่ Xcode เวอร์ชัน 6.1 (6A1052d) ล่าสุดซึ่งฉันใช้มาก่อนและการสร้างดัชนีคือ คงที่และยังคงทำงานได้ดี

ข้อสรุปของฉันคือนี่เป็นข้อบกพร่องของ Xcode เวอร์ชัน 6.1 (6A1052d) ซึ่งฉันหวังว่าจะปรับปรุงให้ดีขึ้นในอนาคต

ปัญหาจะกลับมาเป็นครั้งคราวการแก้ไขแบบเดิมจะใช้ได้ทุกครั้ง ฉันเดาว่าโซลูชันอื่นน่าจะใช้ Xcode เวอร์ชัน 6.1 (6A1030) ที่เก่ากว่า แต่จะใช้ไม่ได้กับอุปกรณ์ที่ใช้ iOS 8.1 และจะไม่มีการแก้ไขข้อบกพร่องล่าสุด


ฉันได้ลองใช้คำแนะนำส่วนใหญ่ในการแก้ปัญหาการจัดทำดัชนีถาวรและนี่เป็นข้อเดียวที่ใช้ได้ผลสำหรับฉัน ฉันไม่มี Xcode 6 รุ่นเก่า แต่ฉันมี Xcode 5 มันจะไม่สร้าง แต่มันทำดัชนีและหลังจากนั้น Xcode 6.1 ก็ทำดัชนีสำเร็จ
SarahR

ฉันลืมบอกไปว่านี่เป็นเพียงวิธีแก้ปัญหาชั่วคราวและฉันต้องทำอีกครั้งในอีกไม่กี่ชั่วโมงต่อมา
SarahR

2

ฉันได้ลองใช้ Xcode 8.3.3 แล้ว นี่คือผลลัพธ์ของฉัน:

คุณสามารถเขียนโค้ด Swift ได้อย่างสมบูรณ์แบบซึ่งจะทำให้การทำดัชนีค้าง

เมื่อการจัดทำดัชนีแฮงค์จะแฮงค์ การเปลี่ยนรหัส Swift กลับไปเป็นสิ่งที่ไม่ทำให้ดัชนีค้างไม่ได้ช่วยอะไร แต่ก็ยังคงค้างอยู่

การปิดโปรเจ็กต์และเปิดใหม่ไม่ได้ช่วยอะไรในสถานการณ์นั้น

การออกจาก Xcode และรีสตาร์ทช่วยได้ การจัดทำดัชนีจะไม่ค้างอีกต่อไป (นั่นคือถ้าคุณเปลี่ยนรหัสกลับเป็นสิ่งที่ไม่ทำให้แฮงค์)

การรีสตาร์ท Mac ช่วยได้เช่นกันแม้ว่าจะไม่จำเป็นก็ตาม

การแขวนนั้นเกิดจากรหัส Swift ที่ดีเยี่ยม ตัวอย่างที่ฉันเคยดูเหมือน

if let date = function1()
?? function2()
?? function3()
?? function4()
?? function5()
?? function6()
?? function7()
?? function8()
?? function9()
?? function10() {
    return date
}

การจัดทำดัชนีจะหยุดทำงาน ฉันแสดงความคิดเห็นส่วนใหญ่ "??" เส้นและมันก็ใช้ได้ (หลังจากออกและเปิดใช้งาน Xcode ใหม่) ไม่ใส่ความคิดเห็นทีละบรรทัด ด้วยจำนวนบรรทัดก็ใช้ได้แล้วการไม่ใส่ข้อคิดเห็นบรรทัดถัดไปจะทำให้ค้าง

สิ่งเดียวที่เห็นได้ชัดคือการเปลี่ยนรหัสของคุณ


2

ใน Xcode ของฉันวิธีแก้ปัญหาคือปิดหน้าต่างที่ซ้ำซ้อนทั้งหมด ด้วยเหตุผลบางประการหน้าต่างที่เปิดอยู่จำนวนมากทำให้ Xcode ช้ามาก


สำหรับฉันนี่เป็นวิธีแก้ปัญหาเช่นกันน่าแปลกใจเพราะมันใช้งานได้ดีมานานแล้วด้วยจำนวนหน้าต่างที่เปิดเท่ากัน
Christian

1

ในที่สุดฉันก็ "แก้ไข" ปัญหานี้แม้ว่าจะเป็นเพียงวิธีแก้ปัญหา

ฉันสร้างโปรเจ็กต์อื่นและเพิ่มไฟล์ทีละไฟล์ จากนั้นฉันก็เห็นไฟล์ viewcontroller.swift ที่ "ยาวมาก" จากนั้นฉันก็แตกรหัสเป็นโมดูลและสร้างรหัสที่ใช้ซ้ำ ๆ เหล่านั้นให้เป็นฟังก์ชันในไฟล์ที่รวดเร็ว และฉันได้รับคำแนะนำทางออนไลน์ว่านิพจน์แบบยาวควรแบ่งออกเป็นนิพจน์ที่สั้นกว่า จากนั้นการจัดทำดัชนีจะทำงานและการคอมไพล์จะทำงาน

ตอนนี้ฉันมี "แก้ไข" แล้ว

แต่ฉันไม่คิดว่านี่จะถูกต้อง Xcode IDE ควรจะสามารถจัดการไฟล์ที่รวดเร็ว "ยาวมาก" ของฉันได้มากกว่า 1,500 บรรทัดเท่านั้น ฉันเชื่อว่านี่เป็นข้อผิดพลาดอย่างแน่นอน (มีอยู่เป็นเวลานาน) แม้ว่า Xcode 6.1 จะอัปเกรดจาก Xcode 6.0.1 แล้วก็ตาม


1

สำหรับฉันฉันลบแอพ Xcode แล้วดาวน์โหลดอีกครั้งและติดตั้ง นั่นช่วยแก้ปัญหาได้อย่างน้อยก็ในตอนนี้


1

โดยปกติแล้วการทำดัชนี Xcode สำหรับโค้ดของคุณสำหรับคำแนะนำและการเติมข้อมูลอัตโนมัติเหนือสิ่งอื่นใดเช่นการช่วยเหลือคุณในกระดานเรื่องราวและในทางกลับกัน แต่เพื่อให้โปรเจ็กต์ xcode ของคุณเร็วขึ้นคุณสามารถปิด / เปิดผ่านเทอร์มินัล

ปิดการจัดทำดัชนี
ค่าเริ่มต้นการเขียน com.apple.dt.XCode IDEIndexDisable 1 เปิดค่าเริ่มต้นการจัดทำดัชนีเขียน com.apple.dt.XCode IDEIndexDisable 0

แต่แนวทางที่ดีกว่าในการใช้ mac ที่รวดเร็วพร้อมแรมที่ดี


2
การปิดการทำดัชนี Xcode ทำให้พิการอย่างรุนแรงและไม่ควรทำ การบอกให้ใครบางคนซื้อ Mac เครื่องใหม่ไม่ควรเป็นคำตอบแล็ปท็อปอายุ 2 ปีควรจะจัดการ Xcode ล่าสุดได้
Knight0fDragon

macOS 10.13 Beta 7 นำเสนอสิ่งที่ขัดข้องทั้ง Xcode 9 Beta 6 และ Xcode 8 ทันทีที่ตัวสร้างดัชนีทำงาน การปิดเป็นวิธีเดียวที่จะใช้ Xcode ต่อไปแม้ว่าจะเป็นเวอร์ชันที่พิการก็ตาม
Pegolon

0

หากคุณไม่คิดที่จะเปลี่ยนกลับไปเป็น 6.0.1 จนกว่าพวกเขาจะเข้าใจนั่นคือสิ่งที่เหมาะกับฉัน ฉันมีปัญหาเดียวกันกับทั้ง 6.1 และ 6.1.1 ตอนนี้ฉันสบายดี ฉันจะลอง 6.2 เมื่อมันออกมา

คุณสามารถค้นหาซอฟต์แวร์ Apple เวอร์ชันก่อนหน้าได้ในเว็บไซต์ dev อย่างเป็นทางการที่นี่: https://developer.apple.com/downloads/index.action

หากคุณทำเช่นนี้โปรดลบสำเนา Xcode ปัจจุบันของคุณก่อน


0

ฉันใช้ Xcode 6.1.1 กับไฟล์ที่รวดเร็วบน MacBook Pro เดียวกัน

ในขณะที่ฉันเพิ่มแถวลงในอาร์เรย์สตริง 3 มิติทันใดนั้น Xcode ก็ใช้งานไม่ได้และตอนนี้ฉันไม่สามารถทำอะไรได้เลย

จะพยายามเปลี่ยนกลับเป็น 6.1 และหวังว่าปัญหาจะหมดไป


ฉันมีปัญหาเดียวกัน หลังจากการเพิ่ม xcode ของพจนานุกรมอาร์เรย์ก็ไม่สามารถใช้งานได้ ... คุณพบวิธีแก้ปัญหาหรือไม่?
Almazini

ฉันกลับไปที่ Xcode 6.1 ซึ่งทำงานได้ดีขึ้น มันไม่ได้ติดอยู่กับการสร้างดัชนีตลอดไป แต่บางครั้งฉันก็พิมพ์และรับลูกบอลชายหาดเป็นเวลา 4 วินาที โดยรวมแล้วฉันสามารถเขียนโค้ดได้มากพอที่จะทำงานให้เสร็จ ฉันไม่ได้เปลี่ยนรหัสใด ๆ ของฉัน แม้ว่าใน Xcode 6.1 แบตเตอรี่ของ macbook pro จะไม่ได้รับผลกระทบมากเกินไป แต่ใน macbook air กลางปี ​​2013 ของฉันที่ใช้งาน 6.1.1 อายุการใช้งานแบตเตอรี่ก็ถูกยิงอย่างแน่นอน ใช้เวลาตั้งแต่ ~ 12 ชั่วโมงถึง 2 ชั่วโมงเมื่อฉันเริ่ม Xcode
gardner888

0

ฉันเห็นสิ่งนี้ใน Xcode 6.3.2 ฉันหวังเป็นอย่างยิ่งว่าหนึ่งปีหลังจากการเผยแพร่พวกเขาจะให้คอมไพเลอร์ทำงานได้ แต่อนิจจา

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

    let hangsInsteadOfError = { l, r in
        return l.nameFirst < r.nameFirst
        || l.nameFirst == r.nameFirst && l.nameLast < r.nameLast }

    let fixingErrorAvoidsHang = { (l:User, r:User) -> Bool in
        return l.nameFirst < r.nameFirst
            || l.nameFirst == r.nameFirst && l.nameLast < r.nameLast }

หากฉันได้เรียนรู้อะไรจากการทำงานใน Swift ก็คือการทำงานเพิ่มขึ้นเพื่อหลีกเลี่ยงไม่ให้ย้อนรอยมากเกินไปเพื่อค้นหารหัสที่กระทำผิด


0
  1. สถานะการจัดทำดัชนีของคุณเป็น "วงกลมตัวบ่งชี้" หรือ "แถบความคืบหน้า" หรือไม่
  2. หากเป็น "วงกลมตัวบ่งชี้" แสดงว่าติดอยู่ที่จุดเริ่มต้นแล้ว
  3. เปิดและตรวจสอบกับโปรเจ็กต์อื่น ๆ ของคุณหากเหมือนกันทั้งหมดนั่นหมายความว่าเป็นปัญหาของระบบ
  4. เพียงรีสตาร์ทคอมพิวเตอร์และทุกอย่างจะดี

0

ฉันใช้ Xcode 8.2 และจบลงด้วยปัญหานี้ มันเริ่มต้นหลังจากที่ฉันกำหนดตัวแปรทูเพิลที่ซับซ้อน - อาร์เรย์ของทูเพิลที่มี subarray ของทูเปิล สิ่งต่างๆจะช้าลงอย่างมากเมื่อ subarray ของ tuple มีคุณสมบัติที่คำนวณทางโปรแกรม

ดังที่คำตอบอื่น ๆ ระบุไว้การจัดทำดัชนีจะใช้เวลาตลอดไปและฉันเชื่อว่ากำลังพยายามอนุมานประเภทของตัวแปร

ฉันแก้ปัญหาก่อนโดยกำหนดตัวแปรอย่างชัดเจนพร้อมประเภทรวมอยู่ด้วย เมื่ออัปเดตคุณสมบัติฉันจะคำนวณก่อนจากนั้นกำหนดให้กับทูเพิลแทนที่จะคำนวณในการกำหนดตัวแปร

นี่คือตัวอย่างโค้ด

var sectionTuples: [(section: String, rows: [(name: String, subtitle: String)])] = []
let subtitle1: String = "" // something calculated dynamically
let subtitle2: String = "" // something calculated dynamically
sectionTuples = [(
section: "Section 1", rows: [
(name: "name1", subtitle: subtitle1),
(name: "name2", subtitle: subtitle2)
])]

บรรทัดล่างคืออย่าให้ Xcode อนุมานโครงสร้างที่ซับซ้อน


0

ฉันมีปัญหาเดียวกัน Xcode ของฉันคือ 8.2.1 แต่ในกรณีของฉันฉันต้องการสร้างอาร์เรย์ของพจนานุกรมที่มีคู่คีย์ - ค่า 33 คู่ ฉันกำลังทำในลักษณะต่อไปนี้ซึ่งติดอยู่ในการจัดทำดัชนี:

var parameter = [String : AnyObject]()
var finalArray = [parameter]

for item in listArray
{
    parameter = ["A": item.a as AnyObject, "B": item.b as AnyObject, "C": item.c as AnyObject, ... , "Z": item.z as AnyObject]

    finalArray.append(parameter)
}

ต่อไปนี้ทำงานให้ฉัน:

var parameter = [String: AnyObject]()
var finalArray = [parameter]

for item in listArray
{
    parameter["A"] = listArray.a as AnyObject
    parameter["B"] = listArray.b as AnyObject
    parameter["C"] = listArray.c as AnyObject
    parameter["D"] = listArray.d as AnyObject 
    .
    .
    .
    parameter["Z"] = listArray.z as AnyObject 
    finalArray.append(parameter)
}

0

ฉันมีปัญหานี้เช่นกันและแก้ไขได้โดยการลบ / เปลี่ยนนิพจน์ด้วยโอเปอเรเตอร์ "+"

ฉันเปลี่ยนสิ่งนี้:

var mainArray = arrayOne + arrayTwo + arrayThree + arrayFour + arrayFive

สำหรับสิ่งนี้:

var mainArray = arrayOne
mainArray += arrayTwo
mainArray += arrayThree
mainArray += arrayFour
mainArray += arrayFive

มันแก้ปัญหาได้

เครื่องของฉันเป็น MBP สูงสุดปลายปี 2013


ตรงกับประสบการณ์ของฉัน มันแฮงค์ด้วยรหัส Swift ที่ดีเยี่ยมและวิธีเดียวที่จะแก้ไขได้คือเปลี่ยนรหัส
gnasher729

0

คุณอาจต้องการอัปเดตเป็น Xcode 6.1.1

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


7
น่าสนใจ. สำหรับฉัน 6.1.1 นำเสนอปัญหาการจัดทำดัชนีที่ไม่มีที่สิ้นสุดโดยมีโครงการที่เปิดได้ดีใน 6.1 sign
Pascal Bourque

ฉันเห็น. ในกรณีของเราเรายังทำให้นิพจน์ง่ายขึ้นและลดขนาดคลาสโดยใช้คลาสส่วนขยาย ซึ่งค่อนข้างไร้สาระที่เราต้องทำ แต่มันเป็นสิ่งที่เราต้องทำ และดูเหมือนว่าจะทำเคล็ดลับในตอนนี้ นอกจากนี้การแสดงความคิดเห็นในบรรทัดเราได้ จำกัด ส่วนของโค้ดที่ "ซับซ้อนเกินไป" ตามที่คอมไพเลอร์ Swift คิดและลดความซับซ้อนลงให้มากที่สุด หวังว่าพวกเขาจะแก้ไขปัญหานี้โดยเร็วเพราะมันค่อนข้างน่ารำคาญ
Angel Naydenov

0

Xcode 6.2 beta แก้ไขปัญหาให้ฉันได้ ไม่เร็วปานสายฟ้า แต่อย่างน้อยก็ไม่ได้จัดทำดัชนีตลอดไป เบต้าไม่ได้ติดตั้งที่ด้านบนของการติดตั้ง Xcode ปกติของคุณดังนั้นหากคุณไม่ชอบเบต้าคุณก็สามารถลบออกได้

ดาวน์โหลด Xcode ต่างๆรวมถึงเบต้า>


0

ฉันมีสำนวนเช่น:

let x = (value as? Int) ?? someDefault

ด้วย

guard let x = (dateFormatter().string(from: Date()) + msg + "\n").addingPercentEncoding(...) else { ... }

ดังนั้นประเด็นคือการเขียนไฟล์ของคุณใหม่ให้มีนิพจน์ระดับอนุบาลเท่านั้นและปัญหาการจัดทำดัชนีจะหมดไป


0

Xcode 11.5 (11E608c) และยังคงเป็นปัญหาเดิม 6 ปีหลังจากคำถามเดิม ฉันหวังว่าฉันจะ "ทำเครื่องหมาย" แอปเปิ้ลในคำถามนี้เพื่อให้พวกเขาเห็นความยุ่งเหยิงนี้ นี่เป็นโครงการขนาดใหญ่ (> 1,000 ไฟล์) และฉันอยู่ภายใต้นาฬิกาดังนั้นเมื่อฉันสังเกตเห็นดัชนีการแช่แข็งฉันมีไฟล์มากกว่า 100 ไฟล์เปลี่ยนไปและไม่สามารถย้อนกลับได้

ฉันลองทุกอย่างแล้ว:

  1. ล้างข้อมูลที่ได้มาและสร้าง
  2. รีสตาร์ท xcode รีสตาร์ท mac
  3. ลบและเพิ่มแหล่งที่มา
  4. ค้นหาพจนานุกรมตัวอักษร ฯลฯ ฯลฯ

ปัญหาคือการสร้างอาร์เรย์:

private var overlayColors: [UIColor] = [UIColor(hex: "#b71c1c"), UIColor(hex: "#4a148c"),
                                        UIColor(hex: "#880e4f"), UIColor(hex: "#1de9b6"),
                                        UIColor(hex: "#f50057"), UIColor(hex: "#311b92"),
                                        UIColor(hex: "#f44336"), UIColor(hex: "#651fff"),
                                        UIColor(hex: "#d500f9"), UIColor(hex: "#3d5afe"),
                                        UIColor(hex: "#bf360c"), UIColor(hex: "#0d47a1"),
                                        UIColor(hex: "#006064"), UIColor(hex: "#2979ff"),
                                        UIColor(hex: "#ff6f00"), UIColor(hex: "#1a237e"),
                                        UIColor(hex: "#795548"), UIColor(hex: "#004d40"),
                                        UIColor(hex: "#00e676"), UIColor(hex: "#01579b"),
                                        UIColor(hex: "#33691e"), UIColor(hex: "#827717"),
                                        UIColor(hex: "#76ff03"), UIColor(hex: "#ffc400"),
                                        UIColor(hex: "#e65100"), UIColor(hex: "#00b0ff"),
                                        UIColor(hex: "#ff3d00"), UIColor(hex: "#616161"),
                                        UIColor(hex: "#263238"), UIColor(hex: "#ff1744")]

สิ่งที่ช่วยให้ฉันค้นพบไฟล์ swift ที่ไม่ดีคือเมื่อ xcode ตรึงดัชนีฉันทำตามขั้นตอนต่อไปนี้

  1. เปิดการตรวจสอบกิจกรรม -> กระบวนการ "รวดเร็ว" -> แสดงข้อมูลกระบวนการ -> เปิดไฟล์และพอร์ต สิ่งนี้จะให้รายการไฟล์ที่กระบวนการนี้กำลังดำเนินการเจาะรายชื่อไฟล์ที่เป็นไปได้ที่ไม่ดี
  2. เครื่องมือที่มีประโยชน์อื่น ๆ คือสคริปต์นี้ SOURCEKIT_LOGGING=3 /Applications/Xcode.app/Contents/MacOS/Xcode &> ~/Documents/xcode.logนี้ซึ่งจะเริ่ม Xcode ด้วย verbose ระดับ 3 และเริ่มบันทึกในไฟล์บันทึก
  3. ค้นหาในไฟล์บันทึกรายการสุดท้ายสำหรับไฟล์ที่รวดเร็วของคุณเช่น: "my_project / Source / App /"

ไม่ใช่วิธีการแก้ปัญหาที่สมบูรณ์ แต่การเจาะลึกและรู้ว่าควรดูที่ใดเป็นประโยชน์

เปิดการตรวจสอบกิจกรรม -> กระบวนการ "รวดเร็ว" -> แสดงข้อมูลกระบวนการ -> เปิดไฟล์และพอร์ต

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