SourceKitService สิ้นสุดแล้ว


242

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

นี่คือภาพตัวอย่าง:

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


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

4
ฉันเพิ่งเริ่มมีปัญหานี้ ... จากนั้นฉันก็พบข้อผิดพลาดทางไวยากรณ์ในไฟล์ที่รวดเร็วของฉัน เมื่อฉันแก้ไขสิ่งนี้ตัวแก้ไขเริ่มทำงานอีกครั้ง
Brindy

80
ฉันจะฆ่าเพื่อที่จะได้รับการแก้ไขในขณะนี้ ...
ซานตาคลอส

2
ข้อผิดพลาดนี้เกิดจากข้อผิดพลาดทางไวยากรณ์ภายใน Swift ถ้าคุณเอาไวยากรณ์ผิดพลาดข้อผิดพลาดจะหายไป :)
สเตฟเฟ Brem

2
ไม่เพียง แต่จะไม่ได้รับการแก้ไขใน 6.1 แต่ยังเกิดขึ้นได้แม้กับ "ข้อผิดพลาดเล็ก ๆ น้อย ๆ " ซึ่งไม่ได้มีข้อผิดพลาดแม้แต่น้อย คุณมักจะสามารถทริกเกอร์มันในขณะที่ยังพิมพ์อยู่ ฉันได้มันเกิดขึ้นเมื่อฉันได้ไกลถึง "stru" ใน "struct" ผมคิดว่ามันจริงๆอยากจะบอกอะไรบางอย่างก่อนที่จะมี "กะรัต"!
Maury Markowitz

คำตอบ:


114

คำตอบของฉัน (Xcode6-Beta7) เป็นเพียงการลบโฟลเดอร์ Derived Data

Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.

หวังว่านี่จะช่วยใครซักคน มีสาเหตุหลายประการที่ทำให้เกิดความผิดพลาดนี้ได้อย่างชัดเจน


ขอบคุณมันทำให้มันคงที่
Noura

4
ดูเหมือนว่านี่จะช่วยแก้ปัญหา แต่ยังใช้ Xcode 6.1 GM
Flovdis

7
สิ่งนี้แก้ไขได้ประมาณ 10 นาทีจากนั้นฉันเปลี่ยนชื่อตัวแปรและกลับมาแล้ว!
hariseldon78

1
ไม่ใช่การแก้ไขอย่างถาวร แต่เพียงเพิ่มประสิทธิภาพของคำตอบ .. สร้างเชลล์สคริปต์และเรียกใช้เมื่อใดก็ตามที่มันเกิดขึ้น rm -frd ~ / Library / Developer / Xcode / DerivedData / * rm -frd ~ / Library / Caches / com.apple.dt Xcode / *
Raj

2
ไม่ได้แก้ไขปัญหาของฉัน
Shirish Kumar

35

ฉันเชื่อว่าฉันอาจพบวิธีแก้ปัญหาทั่วไปมากกว่า ด้านล่างเป็นขั้นตอนที่ฉันใช้เพื่อสนับสนุน Xcode ไม่ให้เกิดSourceKitService Terminatedข้อผิดพลาด


อาการที่ฉันมี:

  • เมื่อเราจะเริ่มต้นขึ้นที่สนามเด็กเล่นใหม่ผมจะได้รับข้อผิดพลาดเกี่ยวกับการที่จะไม่สามารถสื่อสารกับสนามเด็กเล่น ( Error running playground: Failed prepare for communication with playground.ดูภาพนี้บน Twitter
  • เมื่อฉันจะเปลี่ยนสนามเด็กเล่นจากOS Xเป็นiOSฉันจะได้รับข้อผิดพลาดอีกครั้ง (โชคไม่ดีที่ฉันไม่ได้เขียนลงไป)
  • เมื่อฉันจะเริ่มพิมพ์ในโครงการ Swift ที่ใช้ iOS การพยายามใช้การเติมโค้ด / Intellisense ในคลาสเฉพาะของ UIKit ฉันจะได้รับSourceKitService Terminatedปัญหาในเธรดนี้

กระบวนการแก้จุดบกพร่อง:

  • ฉันเริ่มต้นด้วยการมองผ่าน google สำหรับ SourceKitService สิ่งนี้มีน้อยมาก
  • ฉันเริ่มตรวจสอบ Console.app ในขณะที่ใช้ Xcode นี่แสดงให้เห็นข้อผิดพลาดสองสามข้อ:
    • IDEPlaygroundDocument: Error encountered running playground
    • com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.

สิ่งที่ฉันทำเพื่อแก้ไขปัญหานี้

หากคุณมีปัญหาภายในบริบทของโครงการ Swift ให้ลองทำสิ่งนี้เพียงลำพังก่อน หากไม่ได้ผลให้ลองทำตามขั้นตอนทั้งหมดด้านล่าง

  1. เปิดโครงการของคุณและเปลี่ยนเป้าหมายการปรับใช้ของเป้าหมายเป็นอะไร <= 7.1

กระบวนการที่มีความยาวและเกี่ยวข้องมากขึ้น (3 ขั้นตอนแรกนั้นไม่ได้มีประโยชน์แน่นอน แต่ฉันทำไปแล้วบันทึกไว้ที่นี่)

  1. ลบ Xcode ทั้งหมดในระบบของคุณโดยสมบูรณ์
  2. รีสตาร์ทคอมพิวเตอร์ของคุณ
  3. ติดตั้ง Xcode6-beta ใหม่อีกครั้งเท่านั้น
  4. ตรวจสอบว่าคุณยังคงมีปัญหาในสนามเด็กเล่นและ / หรือโครงการ
  5. เปิด iOS Simulator
  6. ฮาร์ดแวร์ -> อุปกรณ์ -> จัดการอุปกรณ์
  7. ลบอุปกรณ์ทั้งหมด
  8. สร้างอุปกรณ์ทั้งหมดที่คุณต้องการ ฉันต่อท้ายเวอร์ชั่น iOS ต่อท้ายชื่อเพียงเพราะ
  9. รีสตาร์ท Xcode และโปรแกรมจำลอง
  10. ตรวจสอบว่าที่สนามเด็กเล่นน้อยไม่มีอีกต่อไปโยนปัญหาเมื่อเปลี่ยนจากการOS XiOS
  11. เปิดโครงการของคุณและเปลี่ยนเป้าหมายการปรับใช้ของเป้าหมายเป็นอะไร <= 7.1

การวิเคราะห์

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


2
มีปัญหาที่คล้ายกัน: "ไม่ได้ติดตั้งรันไทม์สำหรับอุปกรณ์ที่เลือก" ข้อผิดพลาดในการวิ่งสนามเด็กเล่นสำหรับ iPhonesimulator ขั้นตอนที่ 5 ~ 9 แก้ไขปัญหา
ข้าวบาร์เลย์

ตามหมายเหตุ - Xcode 6 Beta 3 ได้แก้ไขปัญหาให้ฉันแล้ว ไม่แน่ใจว่าเป็นเพราะอะไร หวังว่าเหมือนกันจะเป็นจริงสำหรับคนอื่น ๆ
Andrew Monshizadeh

2
ขอบคุณสำหรับขั้นตอนเหล่านี้ ฉันปรับเป้าหมายการปรับใช้ของฉันจาก 7.0 เป็น 7.1 และดูเหมือนว่าจะแก้ไขปัญหาได้แล้วในตอนนี้
Nick

การตั้งค่าเป้าหมายการปรับใช้เป็น 7.1 นั้นใช้งานได้สำหรับฉัน แต่ฉันกำลังใช้เป้าหมายเฟรมเวิร์กพร้อมกับเป้าหมายของแอปดังนั้นการรวบรวมสาเหตุนี้ล้มเหลวซึ่งไม่ดีจริงๆ แต่ฉันไม่ได้รับการแนะนำรหัสอีกต่อไปแม้สีจะกลับมา!
โซโลมอน

1
ทำตามขั้นตอนเหล่านี้ทั้งหมด แต่ไม่ได้ผลสำหรับฉัน : - /
Rohit Goyal

32

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

คัดลอกและวางบรรทัดต่อไปนี้ในเทอร์มินัล:

rm -rf ~ / Library / Developer / Xcode / DerivedData / ModuleCache


1
มันทำเพื่อฉัน ในขณะที่ฉันสามารถรับการเน้นและการเติมข้อความอัตโนมัติเมื่อฉันเลือกอุปกรณ์ IOS ในรูปแบบที่ใช้งานอยู่
Wez

1
มันก็ใช้ได้กับฉันเช่นกัน ตามบันทึกประจำรุ่นที่นี่ บางส่วนนี้ได้รับการแก้ไขในเมล็ดพันธุ์ Xcode 6.1.1 GM
Jacob Harding

อนิจจาปีต่อมาและ Xcode ไม่แน่นอนแน่นอนที่สุด การใช้ Xcode 8.1 (8B62) และยังทำให้ SourceKitServer ขัดข้องทุกครั้งที่ฉันคลิกที่สัญลักษณ์ ล้างข้อมูลที่ได้รับแล้วลบ ModuleCache รีสตาร์ท Xcode Xcode ที่ติดตั้งใหม่ ติดตั้ง Xcode บนเครื่องใหม่ สิ่งเดียวกันเกิดขึ้น Xcode เป็นระเบียบที่น่าสงสาร
Womble

27

SourceKitService ขัดข้องในระบบของฉันทันทีที่ฉันพิมพ์

extension foo {

ฉันใช้ Xcode 6 beta 6 และไม่สำคัญว่าฉันจะพิมพ์เป็นไฟล์ว่างเปล่าหรือเพิ่มลงในไฟล์ที่มีอยู่ ทันทีที่แหล่งมีหนึ่งextensionบล็อกมันจะพัง สิ่งนี้เกิดขึ้นแม้ในโครงการที่สร้างขึ้นใหม่

"โซลูชัน" ของฉันคือการหลีกเลี่ยงการขยายในแหล่งที่ฉันกำลังทำงานอยู่ ฉันคอมเม้นต์จุดสิ้นสุดของคลาสบล็อกและจุดเริ่มต้นของบล็อกส่วนขยาย ทันทีที่ฉันทำงานในชั้นเรียนเสร็จฉันก็แสดงความคิดเห็นอีกครั้ง:

class MyClass {

    [... my stuff ...]

//}
//
//extension MyClass {

}

เพียงแค่ทราบ - ส่วนขยายไม่ได้ทำเช่นนี้ในรุ่นเบต้า 5 เป็น "คุณสมบัติ" beta6 ใหม่
ยีนเดอลิซ่า

การแก้ไขอื่น ๆ เนื่องจากมีส่วนขยายจำนวนมากในโครงการของฉัน ไม่สามารถทำงานกับ Xcode นี้ได้ในตอนนี้
Bagusflyer

นี่คือสิ่งนี้มากขนาดนี้ ฉันค้นพบว่าสิ่งที่กัดฉันในโครงการล่าสุดของฉัน ยื่นรายงานข้อผิดพลาดทันที
Ben Kreeger

2
ยังเป็นปัญหาใหญ่สำหรับฉัน ฉันเพิ่งย้ายส่วนขยายไปยังไฟล์ของตัวเองเขียนรหัสในชั้นเรียนคัดลอกส่วนขยายไปยังส่วนขยาย วิธีการที่ผ่านมานี้เป็นเรื่องยุ่งเหยิงเล็กน้อย
Andrew Monshizadeh

9

มันเริ่มเกิดขึ้นในโปรเจ็กต์ spritekit ของฉันหลังจากใส่ฟังก์ชั่น touchesMoved ฟังก์ชั่นนี้ใช้การบังคับแกะแบบเปิดซึ่งดูเหมือนว่าจะทำให้เกิดปัญหา:

override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)

หลังจากลบเครื่องหมายอัศเจรีย์และหยุดการบังคับให้เปิดเครื่องแล้ว SourceKitService จะหยุดทำงาน

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


ทำงานให้ฉัน! ขอบคุณมาก (หวังว่าพวกเขาจะแก้ไขได้!)
napolux

9

ฉันพบวิธีแก้ไขปัญหาในฟอรัมนักพัฒนาซอฟต์แวร์ของ Apple (ซึ่งต้องมีการลงชื่อเข้าใช้ดังนั้นฉันจะอธิบายที่นี่ด้วย)

TLDR : ไม่ต้องนำเข้า@protocolในของคุณ Objective-C @interfaceถึงสวิฟท์ส่วนหัวของการเชื่อมโยงที่มีชื่อเดียวกันในฐานะที่เป็น ตัวอย่างเช่น SDK ของ Facebook มีทั้งโปรโตคอลและส่วนต่อประสานชื่อว่า "FBGraphObject"

นี่คือกระทู้ที่โพสต์:

การเพิ่ม Facebook SDK ทำให้ SourceKitService ขัดข้อง หากคุณต้องการใช้เบต้า 3 และคุณต้องใช้ SDK ของ Facebook หนึ่งในสิ่งที่ฉันพบและใช้งานได้สำหรับฉันคือการรีแฟคเตอร์ @protocol FBGraphObject @protocol ของ Facebook SDK และเปลี่ยนชื่อเป็น @protocol FBGraphObjectProtocol และเห็นได้ชัดว่า SourceKit ไม่ชอบ

แน่นอนว่านี่เป็นวิธีแก้ปัญหาชั่วคราวเพื่อให้คุณใช้งานได้และคุณจะต้องใช้ Cocoapods หรือสร้าง Facebook SDK ด้วยตัวคุณเองแทนที่จะใช้ไลบรารีเฟรมเวิร์ก

ในขณะนี้คุณจะต้องตรวจสอบให้แน่ใจว่าคุณไม่มีการประกาศ @protocol และ @interface ที่ขัดแย้งกันและมีห้องสมุดบุคคลที่สามที่คุณอาจใช้อยู่

ฉันเสียค่าใช้จ่ายในวันนี้หวังว่าจะช่วยได้!


โพสต์โดยe.partoเมื่อวันที่ 10 กรกฎาคม 2014


ขอบคุณมาก. มันแก้ไขปัญหาของฉัน
Viktor Radchenko

ข้อผิดพลาดนี้สามารถเกิดขึ้นได้หากคุณใช้รูปแบบของ Jon Sterling for Lightweight Immutability ( jonmsterling.com/posts/ … ) เนื่องจากจะแนะนำโพรโทคอลที่ใช้ชื่อร่วมกับการใช้งาน การเปลี่ยนชื่อโปรโตคอลแก้ไขปัญหาให้ฉันโดยไม่มีผลกระทบใด ๆ
erikprice

สิ่งนี้ได้รับการแก้ไขสำหรับฉันด้วย Facebook SDK3.17.1
KVISH

นี้แก้ไขให้ฉัน! ขอบคุณ👏🏻
Roman

8

ใช้ชื่ออื่นที่ไม่ใช่ Swift สำหรับโครงการ "Swift" ถูกสงวนไว้


10
ฉันยังได้รับคำเตือนนี้ แต่ชื่อโครงการของฉันไม่ได้รวมคำว่า Swift เลยดังนั้นนี่จึงไม่ใช่คำตอบที่ "อาจจะ" เป็น "วิธีแก้ปัญหา และไม่ฉันไม่ได้คิดออกสิ่งที่เป็นปัญหากับฉัน
Andrew Monshizadeh

1
@AndrewMonshizadeh ปัญหาเดียวกันไม่มีการอ้างอิงถึง Swift แต่ฉันแทบจะไม่สามารถพิมพ์ตัวละครหรือสองก่อนที่ฉันจะได้รับข้อผิดพลาดนี้
BytesGuy

1
ตรวจสอบต่อไปได้นำฉันไปตรวจสอบที่ผมได้รับข้อผิด SourceKitService สิ้นสุดเมื่อฉันพยายามที่จะใช้เสร็จรหัสใน subclass UIViewของ
Andrew Monshizadeh

4
นี่ไม่ใช่สาเหตุของปัญหา ฉันไม่รู้ว่าเพราะเหตุใด upvote นี้
ซานตาคลอส

1
NRitH ฉันมีปัญหานี้เมื่อใช้ Xcode 6 beta 1 และการเปลี่ยนโครงการเป็นการแก้ไขที่เหมาะกับฉัน อาจมีข้อบกพร่องมากมายที่ก่อให้เกิดข้อผิดพลาดนี้ คุณอาจใช้ Xcode เวอร์ชันใหม่กว่าและพวกเขาอาจแก้ไขข้อผิดพลาดนั้นได้
Marius Fanu

8

ฉันมีปัญหานี้ทุกสองสามวินาทีใน Xcode 6 Beta 3 และมันยังคงดำเนินต่อไปแม้ในโครงการใหม่ที่สมบูรณ์ ฉันเปลี่ยนเป้าหมายการปรับใช้จาก 8.0 เป็น 7.1 และหยุดทำงาน


5

โครงการของคุณชื่อSwift? เมื่อเห็นข้อความนั้นบิวด์ก็จะล้มเหลวเช่นกัน ( <unknown>:0: error: module name "Swift" is reserved for the standard library) SwiftTestลองใช้ชื่อโครงการอื่นเช่น มันจะทำงาน


3

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


2
ฉันเห็นปัญหานี้ด้วยรหัสที่ไม่ได้แก้ไขจากเทมเพลตโครงการ Xcode ดังนั้นฉันไม่คิดว่ามันเป็นปัญหาของรหัส Swift
ThomasW

มันอาจเกิดจากหลาย IBOutlets ที่มีชื่อเดียวกัน
โทนี่

3

ฉันพบว่าการพิมพ์ประเภทตัวแปร (แบบคงที่) อย่างชัดเจนแทนที่จะอนุมานพวกเขาสามารถแก้ไขปัญหาให้ฉันได้


3

ออกจาก Xcode ถ้าเปิดอยู่ จากนั้นเรียกใช้ Terminal:

defaults delete com.apple.dt.Xcode

สิ่งนี้จะคืนค่า Xcode เป็นการตั้งค่าเริ่มต้น เปิด Xcode และทุกอย่างจะทำงานได้อีกครั้ง


2

สำหรับฉัน (xcode 6.1) เหตุผลก็คือฉันลืมที่จะนำคลาสย่อยของฉันไปใช้กับโปรโตคอล

เช่นนี้ผิด

protocol SomeProtocol { ... }
class A :NSObject, SomeProtocol {
...
}
class B : A {
...
}

และนี่ก็โอเค:

protocol SomeProtocol { ... }
class A : NSObject, SomeProtocol {
...
}
class B : A, SomeProtocol {
...
}

มีปัญหาเดียวกันกับโปรโตคอลที่ถูกลืม ขอบคุณสำหรับคำแนะนำ. ดูเหมือนว่ารุ่น xcode ยังคงใช้งานได้เช่น beta =)
John Kakon

ขอบคุณ! ฉันบ้าไปแล้ว ทางออกของคุณแก้ไขปัญหาของฉัน ฉันหวังว่านี้จะได้รับการแก้ไขน่าแปลกที่จะมีการเพิ่มโปรโตคอลในทุกประเภทรอง ..
อัลวิน

1

โปรแกรมที่ประกอบไปด้วยสองบรรทัดนี้เท่านั้น (อาจผิดในแง่ของไวยากรณ์ Swift) เพียงพอที่จะทำให้เกิดข้อผิดพลาด "SourceKitService Terminated" ที่นี่:

var x = 42
println("Hello", x)

การใช้letแทนที่จะvarทำให้ตัวแก้ไขทำงานตามปกติอีกครั้ง Xcode เวอร์ชั่น 6.0 (6A215l)


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

ฉันกำลังบอกว่าข้อผิดพลาดอาจเกิดจากข้อผิดพลาดทางไวยากรณ์และเนื่องจากรหัสของคุณมีข้อผิดพลาดทางไวยากรณ์ที่ชัดเจนก็เป็นไปตามทฤษฎีของฉัน
Lyndsey Scott

"SourceKitService Terminated" เป็นการตอบสนองต่อข้อผิดพลาดทางไวยากรณ์ที่ไม่สมเหตุสมผล นี่เป็นข้อผิดพลาดที่ฉันชี้ให้เห็น นี่เป็นข้อผิดพลาดที่เป็นปัญหา
Alexander

ใช่. นั่นคือความหมายของคำว่า "บั๊ก" ข้อผิดพลาดนี้ดูเหมือนว่าจะถูกทริกเกอร์โดยข้อผิดพลาดทางไวยากรณ์ หวังว่า Apple จะซ่อมมันในไม่ช้า
Lyndsey Scott

1

มีปัญหาเดียวกันวันนี้สิ่งที่อยู่กับprintlnฉันเพิ่งลองสไตล์ NSLog แบบเก่าเพื่อพิมพ์ค่า:

// something like this
println("value = %@", valueObj)

วิธีที่เราควรเขียนสตริงใน swift นั้นมีวิวัฒนาการมาจากสไตล์ printf เป็นสไตล์อินไลน์ดังนั้นตอนนี้คุณฝังค่าลงในสตริงรูปแบบดังนี้:

"Here goes \(YOUR_VARIABLE)"

ดังนั้นสำหรับตัวอย่างด้านบนทางออกคือ:

println("value =\(valueObj)")

เฮ้ @downwoter เกิดอะไรขึ้นกับคำตอบนี้? ดูดีสำหรับฉัน ฉันรู้ว่าเรายังคงสามารถใช้ NSLog กับ Swift ได้ แต่ println เป็นวิธีที่ทำได้ตั้งแต่ Swift และคำตอบนี้เกี่ยวข้องโดยตรงกับปัญหาบรรทัดที่อธิบายขัดข้องบริการ SourceKit
MANIAK_dobrii

ฉันมีปัญหาคล้ายกันกับ println () กำลังพยายามพิมพ์ tuple ที่ไม่มีชื่อ
thisispete

1

ฉันมีปัญหาเดียวกันกับ Xcode6 beta 3 สำหรับโครงการที่สร้างใน beta 2

มันเป็นเพราะการเปลี่ยนแปลงใหม่ในภาษาที่รวดเร็วเช่นไวยากรณ์ประกาศอาร์เรย์

ตรวจสอบรหัสที่ได้รับผลกระทบเนื่องจากการเปลี่ยนแปลงที่เกิดขึ้นในเบต้า 3

http://adcdownload.apple.com//Developer_Tools/xcode_6_beta_3_lpw27r/xcode_6_beta_3_release_notes__.pdf

หนึ่งในตัวอย่างในกรณีของฉันคือ:

ฉันต้องเปลี่ยน:

var tabBarController : UITabBarController = self.window?.rootViewController as UITabBarController;

ถึง

var tabBarController : UITabBarController = self.window!.rootViewController as UITabBarController

สรุป: ดูเหมือนว่ามีข้อผิดพลาดในซอร์สโค้ดในบางเงื่อนไขข้อผิดพลาดนี้ผลิตโดย Xcode

การแก้ไขจนถึงข้อผิดพลาดได้รับการแก้ไข: ตรวจสอบข้อผิดพลาดด้วยตนเอง :)

โชคดี!


1

ทางออกสำหรับฉันเกิดขึ้นกับการเปลี่ยนเครื่องจำลอง ฉันใช้ iPhone 5S เป็นเครื่องจำลองและเมื่อเปลี่ยนเป็น iPhone 5 ทุกอย่างทำงานได้อย่างสมบูรณ์ หวังว่ารุ่นในอนาคตจะแก้ไขได้ทั้งหมด


ฉันได้พบว่าตัวจำลอง iPhone 5 เป็นตัวเลือกที่ดีที่สุดเสมอซึ่ง
กันและกัน

@DanielGalasko ที่น่าสนใจ ฉันมักจะใช้ iPhone 5S มันเสถียรมากสำหรับฉัน
Fomentia

ถ้าคุณกำลังใช้ Xcode 6.1 แล้วนี้ได้รับการแก้ไขความเข้าใจของเรา :)
แดเนียล Galasko

ฉันเพิกถอนคำแถลงของฉันยังคงพังและ 5 คือเครื่องมือจำลองการทำงานเท่านั้น
Daniel Galasko

1

ฉันพบว่าการลบข้อมูลที่ได้รับจากเทอร์มินัลช่วยแก้ไขปัญหาจนกว่าจะเกิดข้อผิดพลาดครั้งถัดไป : S

ตั้งอยู่ที่: / Users / {ชื่อผู้ใช้} / Library / Developer / Xcode / DerivedData / {ชื่อโครงการ} - {Random char sequence}

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


1

ฉันคิดว่าฉันเข้าใจสาเหตุข้อหนึ่ง (เนื่องจากอาจมีมาก)

ในกรณีของฉันฉันกำลังนำเข้าไฟล์ Objective-C ผ่าน Bridging Header ซึ่งมีหนึ่งในความจริงต่อไปนี้:

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

การแก้ไขเป้าหมายของแอพในไฟล์ Objective-C หรือลบการนำเข้าไฟล์เหล่านั้นใน Bridging Header ทั้งหมดเข้าด้วยกันดูเหมือนจะแก้ไขปัญหาได้

FYI - หากคุณต้องการกำหนดเป้าหมายของไฟล์ Header (.h) ที่ไม่มีไฟล์ Implementation (.m) คุณสามารถทำตามขั้นตอนง่าย ๆ เหล่านี้: ไม่สามารถเปลี่ยนการเปิดเผยความเป็นสมาชิกเป้าหมายใน Xcode 4.5


1

เพียงเพิ่มโซลูชันที่มีศักยภาพมากขึ้นที่นี่ฉันได้ตั้งชื่อ class var โดยไม่ได้ตั้งใจกับประเภทของมัน:

class var Settings:Settings {
        get { return classVarWorkAround.settings }
    }

สิ่งนี้จะขัดข้อง SourceKit FOR SURE ข้อผิดพลาดทางไวยากรณ์โง่ แต่ในกรณีที่คนอื่นทำผิดพลาดเหมือนกัน

แก้ไข: ยังเป็นไปตาม @Portland Runner:

ในทำนองเดียวกันหากคุณตั้งค่าประเภทส่งคืนเป็นชื่อ func คุณจะได้รับข้อผิดพลาด

func foo() ->foo{}

1
ในทำนองเดียวกันหากคุณตั้งค่าประเภทส่งคืนเป็นชื่อ func คุณจะได้รับข้อผิดพลาด func foo() ->foo{} (อย่าลังเลที่จะเพิ่มลงในคำตอบของคุณ)
Portland Runner

0

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

    func someFunc() -> (Int?, Int?, Int?) {
     var retVal1:Int? = nil
     var retVal2:Int? = nil
     var retVal3:Int? = nil

     //some other code

     //commenting out the line below helped me
     //(retVal1, retVal2, retVal3)
     return (retVal1, retVal2, retVal3)
    }

ระบบจะบู๊ตตัวเองใหม่โดยไม่คำนึงถึงสิ่งที่คุณทำ คุณไม่จำเป็นต้องแสดงความคิดเห็นในบรรทัดมันจะยังคงเริ่มทำงานอีกครั้งในไม่ช้า และล้มเหลวด้วยแน่นอน
Maury Markowitz

0

รายงานไปยัง Apple (# 17266321):

รายละเอียด:

สรุป: หากเราพยายามพิมพ์พจนานุกรมที่มีค่าเป็นอาร์เรย์ป๊อปอัพจะคอยบอกว่า - "SourceKit ถูกยกเลิกฟังก์ชั่นการแก้ไขชั่วคราว จำกัด " Xcode หยุดการทำงานและสูญเสียการจดจำบริบทซึ่งทำให้ข้อความถูกทำให้ดำคล้ำ

ขั้นตอนในการสร้างซ้ำ: 1. สร้างอาร์เรย์เป็น - "var iOSHistoryArray = [" iOS6 "," iOS7 "," iOS8 ",]"

  1. สร้างพจนานุกรมในฐานะ - "var MacOSYosemiteFeatures: Dictionary = [" อุปกรณ์ ": iOSHistoryArray]"

  2. พิมพ์พจนานุกรมเป็น - "println (" พจนานุกรมที่มีค่าอาร์เรย์:% @ \ n ", MacOSYosemiteFeatures)" (<< - ผู้ร้าย - >>)

  3. ขั้นตอนที่ 3 ทำให้เกิดปัญหาในการแสดงความคิดเห็นซึ่งทำให้ Xcode ทำงานได้อีกครั้ง

ผลลัพธ์ที่ควรได้รับ: Xcode ควรทำงานตามปกติ

ผลลัพธ์ที่แท้จริง: Xcode ไม่ทำงาน, สูญเสียการจดจำบริบท (แบบอักษรทั้งหมดหายไปและข้อความทั้งหมดกลายเป็นสีดำล้วน), Xcode ทั้งหมดกลายเป็นไม่ทำงาน

เวอร์ชัน: เวอร์ชัน 6.0 (6A215l)


0

ลองมัน:

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


@Pang หากคำตอบนั้นถูกต้องและเหมือนกันคำถามนั้นอาจซ้ำกันดังนั้นคุณควรลงคะแนนหรือตั้งค่าสถานะเพื่อปิดพวกเขา - ในกรณีนี้เป็นการเปิดที่แน่นอนเพื่อให้
mmmmmm

0

ปัญหา:

  • หากมีข้อผิดพลาดในซอร์สโค้ดป๊อปอัพ "SourceKitService Terminated" อาจปรากฏขึ้นและการไฮไลต์โค้ดหยุดทำงาน มันอาจหรือไม่อาจเกิดขึ้นเมื่อมันภายใต้เงื่อนไขที่แตกต่างกันหลาย

กรณีของฉัน: ติดตั้งโครงการเบต้า 3, OSX เท่านั้น, หนึ่งไฟล์ตรวจพบข้อผิดพลาด "ตัวดำเนินการช่วงปิดถูกเปลี่ยนจาก .. เป็น .. <" ข้อผิดพลาด ป๊อปอัปเริ่มปรากฏขึ้นและการไฮไลต์โค้ดเริ่มต้นล้มเหลว

สารละลาย:

  • แก้ไขข้อผิดพลาดที่ตรวจพบโดย Xcode
  • เปลี่ยนเป็น. swift อื่น ๆ ใน Navigator กลับมาเป็นต้นฉบับ
  • การเน้นไวยากรณ์ปรากฏขึ้นอีกครั้งและป๊อปอัพ "SourceKitService Terminated" หายไป

0

ใน xcode ไปที่แถบเมนูของคุณ >> หน้าต่าง >> อุปกรณ์ (shift + cmd + 2) หน้าต่างใหม่จะปรากฏขึ้นและที่ด้านล่างซ้ายเพิ่มตัวจำลองใหม่โดยเฉพาะหนึ่งตัวที่ทำงานบน iOS 8.0 เพื่อแก้ไขรายการที่มีอยู่ : คุณอาจต้องรีสตาร์ท xcode

refrence: http://www.reddit.com/r/swift/comments/2bznfo/error_running_playground_unable_to_find_suitable/


0

ในกรณีของฉันฉันได้นำเข้าไฟล์ที่หายไปในส่วนหัวบริดจ์ หลังจากที่ฉันลบการนำเข้าผิดการแจ้งเตือนข้อผิดพลาดหายไป


0

ฉันมีข้อผิดพลาดเดียวกันกับโครงการ Objective-C ++ ที่ซ้อนกันซึ่งตอนนี้รวม Framework ด้วยรหัส Swift เพื่อแก้ไขปัญหานี้ฉันต้องสร้างกรอบงานอย่างชัดเจน เมื่อฉันทำปัญหานั้นหายไปและจะไม่กลับมา;)


0

ยังคงเกิดขึ้นกับ xcode 6 เวอร์ชัน 6.0 (6A313)

  • สร้างโครงการใหม่
  • เพิ่ม Framework & Library
  • เลือกเฟรมเวิร์คโกโก้
  • เพิ่มไฟล์ Swift
  • เพิ่มคลาสให้กับไฟล์ swift

เกิดปัญหา

ps: mac mini รุ่นใหม่ไม่มีการติดตั้ง xcode ก่อนหน้านี้ไม่มีอะไรแปลกใหม่ ฉันคิดว่าเป็นเพียงผลิตภัณฑ์รุ่นเบต้า


0

Xcode 6.1 Beta 3:

ทันทีที่คุณกำหนดนามแฝงที่ไม่ใช่ส่วนตัว (เช่นtypealias Foo = Int) ในไฟล์ Swift ไฟล์หนึ่งจะพิมพ์ตัวอักษรcในไฟล์อื่นที่ SourceKitService ขัดข้อง

โซลูชันอาจลาออกจากการใช้นามแฝงประเภทรอรุ่นเบต้าถัดไปหรือตัดชื่อแทนประเภทของคุณในคำจำกัดความของคลาส:

public class DummyClass {
    public typealias Foo = String
}

และใช้มันเช่นนี้

var myVar:DummyClass.Foo?

0

การเปลี่ยนเป้าหมายการปรับใช้เป็น iOS 8.0 ได้ผลสำหรับฉัน ฉันรู้ว่ามีคนบอกว่าย้ายไปทำงาน <= 7.1 แต่ปัญหานี้ดูเหมือนว่ามาจากหลายแหล่งดังนั้นทางเลือกนี้อาจใช้งานได้

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