Tôi đang gặp sự cố với Xcode khi lỗi "Dịch vụ bộ nguồn bị chấm dứt" xuất hiện và tất cả tô sáng cú pháp và hoàn tất mã đã biến mất trong Swift. Làm thế nào tôi có thể sửa lỗi này?
Đây là một hình ảnh ví dụ:
Tôi đang gặp sự cố với Xcode khi lỗi "Dịch vụ bộ nguồn bị chấm dứt" xuất hiện và tất cả tô sáng cú pháp và hoàn tất mã đã biến mất trong Swift. Làm thế nào tôi có thể sửa lỗi này?
Đây là một hình ảnh ví dụ:
Câu trả lời:
Câu trả lời của tôi (Xcode6-Beta7) chỉ đơn giản là xóa thư mục Dữ liệu đã tạo.
Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.
Hy vọng điều này sẽ giúp được ai đó. Rõ ràng có nhiều lý do tại sao vụ tai nạn này có thể xảy ra.
Tôi tin rằng tôi có thể đã tìm thấy một giải pháp mục đích chung hơn. Dưới đây là các bước tôi đã sử dụng để khuyến khích Xcode không tạo ra SourceKitService Terminated
lỗi.
Error running playground: Failed prepare for communication with playground.
Xem hình ảnh này trên twitter .OS X
sang iOS
, tôi sẽ nhận được một lỗi khác (tiếc là tôi đã không viết nó xuống).SourceKitService Terminated
vấn đề trong luồng này.IDEPlaygroundDocument: Error encountered running playground
com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.
Nếu bạn chỉ gặp sự cố trong bối cảnh của dự án Swift, trước tiên hãy thử điều này. Nếu điều đó không hiệu quả, thì hãy thử tất cả các bước tiếp theo bên dưới.
Quá trình dài hơn và liên quan. (3 bước đầu tiên không chắc chắn hữu ích, nhưng tôi đã thực hiện chúng, và vì vậy hãy ghi lại chúng ở đây)
OS X
sang iOS
.Có vẻ như vấn đề là Xcode6 không thể tìm và kết nối chính xác với trình giả lập. Tôi chưa thể xác định lý do tại sao lại như vậy, nhưng điều này đã cho phép tôi tiếp tục phát triển với Swift. Điều này có thể phải làm với thực tế là các nhị phân giả lập dường như đã di chuyển .
Bạn chỉ cần xóa "ModuleCache", đây là một loại bộ đệm được Xcode sử dụng để tự động hoàn thành.
Sao chép và dán dòng sau vào Terminal:
rm -rf ~ / Thư viện / Nhà phát triển / Xcode / DeruredData / ModuleCache
SourceKitService gặp sự cố trên hệ thống của tôi ngay khi tôi nhập
extension foo {
Tôi đang sử dụng Xcode 6 beta 6 và không vấn đề gì nếu tôi nhập nó vào một tệp trống hoặc thêm nó vào một tệp hiện có. Ngay khi nguồn chứa một extension
khối, nó sẽ sụp đổ. Điều này xảy ra ngay cả trên các dự án mới được tạo ra.
"Giải pháp" của tôi là tránh mở rộng các nguồn mà tôi hiện đang làm việc. Tôi nhận xét kết thúc một khối lớp và bắt đầu khối mở rộng. Ngay sau khi tôi hoàn thành công việc của mình trên lớp, tôi lại nhận xét chúng:
class MyClass {
[... my stuff ...]
//}
//
//extension MyClass {
}
Nó bắt đầu xảy ra trong dự án spritekit của tôi sau khi chèn chức năng touchesMoved. Chức năng này sử dụng cưỡng bức hủy ghép nối, dường như gây ra sự cố:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)
Sau khi xóa các dấu chấm than và do đó dừng bắt buộc hủy kết nối, SourceKitService đã ngừng sự cố.
Hi vọng điêu nay co ich!
Tôi đã tìm thấy một giải pháp trên Diễn đàn dành cho nhà phát triển của Apple (yêu cầu đăng nhập, vì vậy tôi cũng sẽ giải thích tại đây).
TLDR : Không nhập một @protocol
tiêu đề bắc cầu Objective-C sang Swift được đặt tên giống như một @interface
. Ví dụ: SDK Facebook có cả giao thức và giao diện có tên "FBGraphObject".
Đây là bài viết diễn đàn:
Thêm SDK Facebook khiến SourceKitService bị sập. Nếu bạn muốn sử dụng phiên bản beta 3 và bạn cần Facebook SDK, một công việc xung quanh tôi đã tìm thấy và đang hoạt động với tôi là tái cấu trúc @protatio FBGraphObject của Facebook SDK và đổi tên nó thành một cái gì đó như @protatio FBGraphObjectProtatio như một @interface FBGraphObject không thích nó
Đây chắc chắn là một giải pháp tạm thời chỉ để giữ cho bạn hoạt động và bạn sẽ phải sử dụng Cocoapods hoặc tự mình xây dựng SDK Facebook thay vì sử dụng thư viện khung.
Hiện tại, bạn sẽ cần đảm bảo rằng bạn không có các khai báo @protatio và @interface xung đột và bao gồm các thư viện bên thứ 3 mà bạn có thể đang sử dụng.
Điều này làm tôi mất ngày hôm nay, hy vọng nó sẽ giúp!
Đăng bởi e.parto vào ngày 10 tháng 7 năm 2014
3.17.1
Sử dụng tên khác ngoài Swift cho dự án. "Swift" được bảo lưu.
UIView
.
Để khắc phục điều này, bạn có thể gặp một số vấn đề kỳ lạ với mã Swift của mình. Ví dụ, có nhiều khiếm khuyết của IBOutlets vì bạn đang ở giữa sao chép và dán. thông thường nó chỉ là một lỗi cú pháp không thể xử lý.
Thoát khỏi Xcode nếu nó mở. Sau đó, từ Terminal chạy:
defaults delete com.apple.dt.Xcode
Điều này sẽ khôi phục Xcode về cài đặt mặc định. Mở Xcode và mọi thứ sẽ hoạt động trở lại.
Đối với tôi (xcode 6.1) lý do là tôi đã quên chấp nhận lớp con của mình vào giao thức.
Ví dụ, điều này là sai:
protocol SomeProtocol { ... }
class A :NSObject, SomeProtocol {
...
}
class B : A {
...
}
và điều này là ổn:
protocol SomeProtocol { ... }
class A : NSObject, SomeProtocol {
...
}
class B : A, SomeProtocol {
...
}
Một chương trình chỉ bao gồm hai dòng này (có thể sai về cú pháp Swift) là đủ để gây ra lỗi "SourceKitService bị chấm dứt" ở đây:
var x = 42
println("Hello", x)
Sử dụng let
thay vì var
làm cho trình soạn thảo hoạt động bình thường trở lại. Phiên bản Xcode 6.0 (6A215l)
Có một vấn đề tương tự ngày hôm nay, điều này là với println
, tôi chỉ thử kiểu NSLog cũ để in một giá trị:
// something like this
println("value = %@", valueObj)
Cách chúng ta nên soạn chuỗi trong swift đã phát triển từ kiểu printf sang kiểu nội tuyến, vì vậy bây giờ bạn đã nhúng các giá trị của mình ngay vào chuỗi định dạng như thế này:
"Here goes \(YOUR_VARIABLE)"
Vì vậy, ví dụ trên giải pháp là:
println("value =\(valueObj)")
Tôi gặp vấn đề tương tự với Xcode6 beta 3 cho một dự án được tạo trong beta 2.
Đó là bởi vì những thay đổi mới trong ngôn ngữ swift tức là cú pháp khai báo mảng.
Kiểm tra mã bị ảnh hưởng do phá vỡ các thay đổi trong phiên bản beta 3.
Một trong những ví dụ trong trường hợp của tôi là:
Tôi đã phải thay đổi:
var tabBarController : UITabBarController = self.window?.rootViewController as UITabBarController;
đến
var tabBarController : UITabBarController = self.window!.rootViewController as UITabBarController
Kết luận: Hình như nếu có lỗi trong mã nguồn, trong một số điều kiện, lỗi này được tạo bởi Xcode.
Giải pháp cho đến khi lỗi được khắc phục: Kiểm tra lỗi bằng tay :)
Chúc may mắn!
Giải pháp cho tôi tình cờ là thay đổi trình giả lập. Tôi đang sử dụng iPhone 5S cho trình giả lập của mình và khi tôi chuyển nó sang iPhone 5, mọi thứ đều hoạt động hoàn hảo. Hy vọng rằng một phiên bản trong tương lai sẽ sửa chữa nó hoàn toàn.
Tôi nghĩ rằng tôi đã tìm ra một (vì có lẽ có nhiều) lý do điều này xảy ra.
Trong trường hợp của tôi, tôi đã nhập các tệp Objective-C thông qua Tiêu đề Cầu nối có một trong những điều sau đây:
Khắc phục các mục tiêu ứng dụng trên các tệp Objective-C HOẶC loại bỏ việc nhập các tệp đó trong Bridging Header dường như để khắc phục sự cố.
FYI - Nếu bạn cần đặt mục tiêu của các tệp Tiêu đề (.h) không có tệp Thực hiện (.m), bạn có thể làm theo các bước đơn giản sau: Không thể thay đổi mức độ hiển thị thành viên mục tiêu trong Xcode 4.5
Chỉ cần thêm một giải pháp tiềm năng ở đây, tôi đã vô tình đặt tên một lớp var cùng tên với kiểu của nó:
class var Settings:Settings {
get { return classVarWorkAround.settings }
}
Điều này sẽ sụp đổ SourceKit CHO SURE. Lỗi cú pháp ngu ngốc, nhưng trong trường hợp bất cứ ai khác cũng mắc lỗi tương tự.
Chỉnh sửa: cũng theo @Portland Runner:
Tương tự, nếu bạn đặt loại trả về thành tên func, bạn sẽ gặp lỗi.
func foo() ->foo{}
func foo() ->foo{}
(vui lòng thêm nó vào câu trả lời của bạn)
Khi lỗi này bắt đầu bật lên, chỉ cần nhận xét đoạn mã cuối cùng / gần đây bạn đã viết và đợi một lúc. Cú pháp tô sáng sẽ xuất hiện trở lại. Đây là cách tôi làm việc xung quanh vấn đề.
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)
}
Báo cáo với Apple (# 17266321):
Chi tiết:
Tóm tắt: Nếu chúng tôi cố gắng in một từ điển có giá trị dưới dạng một mảng, cửa sổ bật lên sẽ tiếp tục bật lên - "SourceKit bị chấm dứt. Chức năng biên tập bị giới hạn tạm thời". Xcode Đóng băng và mất nhận dạng ngữ cảnh khiến văn bản bị bôi đen.
Các bước để tạo lại: 1. Tạo một mảng dưới dạng - "var iOSHistoryArray = [" iOS6 "," iOS7 "," iOS8 ",]"
Tạo một từ điển dưới dạng - "var MacOSYosemiteFeatures: Dictionary = [" Device ": iOSHistoryArray]".
In từ điển dưới dạng - "println (" Từ điển chứa giá trị Mảng:% @ \ n ", MacOSYosemiteFeatures)" (<< - Thủ phạm - >>)
Bước 3 gây ra sự cố nhận xét khiến cho Xcode hoạt động trở lại.
Kết quả dự kiến: Xcode sẽ hoạt động bình thường.
Kết quả thực tế: Xcode trở nên không hoạt động, mất khả năng nhận dạng ngữ cảnh (Tất cả phông chữ bị mất và tất cả văn bản trở thành màu đen đơn giản), toàn bộ Xcode trở thành Không hoạt động.
Phiên bản: Phiên bản 6.0 (6A215l)
Thử nó:
Có một lỗi trong trình biên dịch / bộ chỉ mục Swift. Một số dòng hoặc dòng trong mã của bạn đang gây khó khăn cho nó. Bạn sẽ phải chỉnh sửa mã của mình với một số trình soạn thảo văn bản khác để nhận xét (các) dòng vi phạm trước khi bạn có thể mở dự án đó bằng Xcode. Nếu bạn không biết vấn đề là gì, hãy bình luận tất cả mã của bạn. Khi bạn mở dự án, bạn có thể bắt đầu đưa mã trở lại từng chút một cho đến khi sự gia tăng hoạt động của CPU cho bạn biết rằng bạn đã tìm thấy vấn đề.
Vấn đề:
Trường hợp của tôi: Đã cài đặt phiên bản beta 3, chỉ dành cho OSX, một tệp đã phát hiện "toán tử phạm vi nửa kín đã bị thay đổi từ .. thành .. <". Cửa sổ bật lên bắt đầu xuất hiện và tô sáng mã bắt đầu thất bại.
Giải pháp:
Trong xcode, hãy chuyển đến thanh menu của bạn >> window >> thiết bị (shift + cmd + 2) một cửa sổ mới sẽ bật lên và ở phía dưới bên trái, thêm một trình giả lập mới, cụ thể là một trình chạy trên iOS 8.0 để chỉnh sửa danh sách hiện có : bạn có thể cần phải khởi động lại xcode
điều chỉnh: http://www.reddit.com/r/swift/comments/2bznfo/error_rasty_playground_unable_to_find_suitable/
Tôi đã có cùng một lỗi với dự án Objective-C ++ lồng nhau hiện bao gồm Framework với mã Swift. Để khắc phục vấn đề này, tôi đã phải xây dựng khung một cách rõ ràng. Khi tôi đã giải quyết vấn đề đó và không quay lại;)
Vẫn xảy ra với xcode 6 Phiên bản 6.0 (6A313)
Tai nạn
ps: mac mini hoàn toàn mới, không cài đặt xcode trước, không có gì lạ. Chỉ là một sản phẩm beta.
Xcode 6.1 Beta 3:
Ngay sau khi bạn xác định bí danh loại không riêng tư (ví dụ typealias Foo = Int
) trong một tệp Swift, hãy gõ một chữ cáic
trong một tệp khác, SourceKitService gặp sự cố.
Giải pháp hoặc là từ bỏ sử dụng các bí danh loại, chờ bản phát hành beta tiếp theo hoặc bọc bí danh loại của bạn trong định nghĩa lớp:
public class DummyClass {
public typealias Foo = String
}
và sử dụng nó như thế này:
var myVar:DummyClass.Foo?