Исходный код SourceKitService

У меня возникла проблема с Xcode, где появляется сообщение об ошибке "Служба исходного набора завершена", и вся подсветка синтаксиса и завершение кода ушли в Swift. Как я могу это исправить?

Вот пример изображения:

enter image description here

Ответ 1

Ответ на мой (Xcode6-Beta7) был просто для удаления папки Derived Data.

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

Надеюсь, это поможет кому-то. Очевидно, что существует много причин, по которым может произойти этот крах.

Ответ 2

Я считаю, что, возможно, нашел более общее решение. Ниже приведены шаги, которые я использовал, чтобы Xcode не вызывал ошибку SourceKitService Terminated.


Симптомы, которые у меня были:

  • Когда я запустил новую игровую площадку, я бы получил сообщение об отсутствии возможности общаться с игровой площадкой (Error running playground: Failed prepare for communication with playground. Смотрите этот образ на твиттере.
  • Когда я бы переключил игровую площадку с 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, сначала попробуйте это сделать. Если это не сработает, попробуйте все шаги ниже.

  • Откройте проект и измените целевую цель развертывания на что-то <= 7.1.

Более длительный и вовлеченный процесс. (Первые 3 шага не очень полезны, но я сделал их, и поэтому записываю их здесь)

  • Полностью удалите все копии Xcode в вашей системе.
  • Перезагрузите компьютер.
  • Переустановите только Xcode6-бета.
  • Убедитесь, что у вас все еще есть проблема на детской площадке и/или проектах.
  • Откройте iOS Simulator.
  • Оборудование → Устройство → Управление устройствами
  • Удалить все устройства.
  • Восстановите все устройства, которые вы хотите. Я добавил версию iOS в конец имени только потому, что.
  • Перезапустите Xcode и симулятор.
  • Убедитесь, что по крайней мере игровые площадки больше не бросают проблемы при переключении с OS X на iOS.
  • Откройте проект и измените целевую цель развертывания на что-то <= 7.1.

Анализ

Похоже, проблема заключается в том, что Xcode6 не может правильно найти и подключиться к симулятору. Я не смог определить, почему это так, но это позволило мне продолжить разработку с помощью Swift. Возможно, это связано с тем, что бинарные файлы симулятора похоже, переместились.

Ответ 3

Вам просто нужно удалить "ModuleCache", это какой-то кеш, используемый Xcode для автозаполнения.

Скопируйте и вставьте следующую строку в терминал:

rm -rf ~/Library/Разработчик/Xcode/DerivedData/ModuleCache

Ответ 4

SourceKitService сбой в моей системе, как только я набираю

extension foo {

Я использую Xcode 6 beta 6, и не имеет значения, буду ли я вводить его в пустой файл или добавлять его в существующий. Как только источник содержит один блок extension, он сработает. Это происходит даже во вновь созданных проектах.

Мое "решение" заключается в том, чтобы избежать расширения в источниках, в которых я сейчас работаю. Я комментирую конец блока класса и начало блока расширения. Как только я закончил свою работу над классом, я снова прокомментирую их:

class MyClass {

    [... my stuff ...]

//}
//
//extension MyClass {

}

Ответ 5

Это начало происходить в моем проекте spritekit после вставки touch-функцийMoved-function. Эта функция использует принудительное разворачивание, что, по-видимому, вызывает проблему:

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

После удаления восклицательных знаков и, таким образом, остановки принудительной разворачивания, SourceKitService перестает сбой.

Надеюсь, это поможет!

Ответ 6

Я нашел решение на форумах разработчиков Apple (для чего требуется логин, поэтому я также объясню это здесь).

TL;DR. Не импортируйте @protocol в заголовок Objective-C в Swift, названный так же, как @interface. Например, в SDK Facebook есть как протокол, так и интерфейс с именем "FBGraphObject".

Здесь сообщение форума:

Добавление SDK для Facebook приводит к сбою службы SourceKitService. Если вы хотите использовать бета-версию 3, и вам нужен Facebook SDK, одна работа вокруг, которую я нашел и работает для меня, - это рефакторинг Facebook SDK @protocol FBGraphObject и переименование его на что-то вроде @protocol FBGraphObjectProtocol как @interface. FBGraphObject также существует и, по-видимому, SourceKit ему не нравится.

Конечно, это временное решение, просто чтобы вы были работоспособны, и вам придется использовать Cocoapods или иным образом создавать Facebook SDK самостоятельно, а не использовать библиотеку фреймворков.

В настоящее время вам необходимо убедиться, что у вас нет конфликтующих объявлений @protocol и @interface, а также сторонних библиотек, которые вы можете использовать.

Это стоило мне сегодня, надеюсь, что это поможет!


Отправлено e.parto на 10 июля 2014 года

Ответ 7

Используйте другое имя, кроме Swift для проекта. "Swift" зарезервирован.

Ответ 8

У меня была эта проблема каждые несколько секунд в Xcode 6 Beta 3, и она продолжалась даже в совершенно новых проектах. Я изменил цель развертывания с 8.0 до 7.1 и он остановился.

Ответ 9

Ваш проект называется Swift? Увидев это сообщение, сборка также будет неудачной (<unknown>:0: error: module name "Swift" is reserved for the standard library). Попробуйте использовать другое название проекта, например SwiftTest. Это сработает.

Ответ 10

Чтобы исправить это, у вас может возникнуть какая-то странная проблема с вашим кодом Swift. Например, наличие нескольких определений IBOutlets, потому что вы были в середине копирования и вставки. обычно это просто синтаксическая ошибка, которая не может быть обработана.

Ответ 11

Я обнаружил, что явным образом (статически) вводя типы переменных, а не выводя их, решил проблему для меня.

Ответ 12

Закройте Xcode, если он открыт. Затем с терминала:

defaults delete com.apple.dt.Xcode

Это приведет к восстановлению Xcode по умолчанию. Откройте Xcode, и все должно работать снова.

Ответ 13

Для меня (xcode 6.1) причина заключалась в том, что я забыл принять свой подкласс к протоколу.

Например, это неверно:

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

и это нормально:

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

Ответ 14

Программа, состоящая только из этих двух строк (возможно, неверная с точки зрения синтаксиса Swift), достаточно, чтобы вызвать здесь ошибку "Исходная ссылка SourceKitService":

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

Использование let вместо var заставляет редактор вести себя нормально снова. Xcode версии 6.0 (6A215l)

Ответ 15

У меня такая же проблема сегодня, дело в println, я просто попробовал старый стиль NSLog для печати значения:

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

Способ, которым мы должны составлять строки в swift, эволюционировал от стиля printf до встроенного стиля, поэтому теперь вы вставляете свои значения прямо в строку формата следующим образом:

"Here goes \(YOUR_VARIABLE)"

Итак, для примера выше решение:

println("value =\(valueObj)")

Ответ 16

У меня была та же проблема с Xcode6 beta 3 для проекта, созданного в бета-версии 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;

to

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

Заключение: Похоже, если в исходном коде есть ошибка, в некоторых случаях эта ошибка возникает с помощью Xcode.

Решение до устранения ошибки: Проверьте ошибку вручную:)

Гудлак!

Ответ 17

Решение для меня, похоже, изменило симулятор. Я использовал iPhone 5S для своего симулятора, и когда я переключил его на iPhone 5, все работало отлично. Надеюсь, что будущая версия полностью исправит его.

Ответ 18

Я обнаружил, что удаление полученных данных из терминала разрешает проблему до следующего сбоя.: S

Он расположен по адресу:/Users/{User name}/Library/Developer/Xcode/DerivedData/{Project Name} - {Random char sequence}

Надеюсь, это поможет.

Ответ 19

Я думаю, что я вычислил один (как, вероятно, много) причин, по которым это происходит.

В моем случае я импортировал файлы Objective-C через заголовок Bridging Header, который имел одно из следующих значений:

  • Файл реализации (.m) для импорта Objective-C не имел правильно настроена целевая программа.
  • Файл Objective-C имел только файл заголовка (.h) и НЕ реализация (.m). (Опять же, я думаю, что это часть "нет" целевая целевая программа ", поскольку вы можете устанавливать цели только в файлах .m а не файлы .h)

Фиксирование целевых объектов приложения в файлах Objective-C ИЛИ удаление импорта этих файлов в заголовочном заголовке вместе, похоже, устраняет проблему.

FYI. Если вам нужно установить целевой файл заголовка (.h), у которого нет файла реализации (.m), вы можете выполнить следующие простые шаги: Невозможно изменить видимость целевого членства в Xcode 4.5

Ответ 20

Чтобы добавить еще одно потенциальное решение здесь, я случайно назвал класс var тем же именем, что и его тип:

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

Это приведет к сбою SourceKit FOR SURE. Глупо синтаксическая ошибка, но в случае, если кто-то другой совершит ту же ошибку.

Изменить: также в соответствии с @Portland Runner:

Аналогично, если вы установите тип возврата на имя func, вы получите сообщение об ошибке.

func foo() ->foo{}

Ответ 21

Когда эта ошибка начнет появляться, просто закомментируйте последнюю/недавнюю часть кода, которую вы написали, и подождите некоторое время. Выделение синтаксиса должно появиться снова. Вот как я работаю над проблемой.

    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)
    }

Ответ 22

Сообщено Apple (# 17266321):

Подробнее:

Резюме: Если мы попытаемся напечатать словарь со значением в виде массива, всплывающее окно продолжает выскакивать: "SourceKit завершен. Функция редактора временно ограничена". Xcode Замораживает и теряет контекстное распознавание, заставляя текст почерневать.

Шаги по воспроизведению: 1. Создайте массив как - "var iOSHistoryArray = [" iOS6 "," iOS7 "," iOS8 ",]"

  • Создайте словарь как - "var MacOSYosemiteFeatures: Dictionary = [" Устройство ": iOSHistoryArray]".

  • Распечатайте словарь как - "println (" Словарь, содержащий значение массива:% @\n ")," (<p>

  • Шаг 3 вызывает комментирование проблемы, что делает функциональность Xcode еще раз.

Ожидаемые результаты: Xcode должен нормально функционировать.

Фактические результаты: Xcode становится нефункциональным, теряет распознавание контекста (весь шрифт потерян и весь текст становится черным), весь Xcode становится неактивным.

Версия: Версия 6.0 (6A215l)

Ответ 23

Попробуйте:

В компиляторе/индексаторе Swift имеется ошибка. Некоторые строки или строки в ваш код создает трудности. Вам нужно будет отредактировать код с некоторым другим текстовым редактором, чтобы прокомментировать строку (-ы) прежде чем вы сможете открыть этот проект с помощью Xcode. Если у вас есть не знаю, в чем проблема, закомментируйте весь свой код. Как только вы проект открыт, вы можете начать возвращать код понемногу пока повышение активности процессора не сообщит вам, что вы нашли проблема.

Ответ 24

Проблема:

  • Если в исходном коде есть ошибка, появляется всплывающее окно "SourceKitService Terminated", и подсветка кода перестает работать. Это может произойти или не произойти, когда оно выполняется в нескольких разных условиях.

Мой случай: установлен бета-версия 3, только проект OSX, один файл обнаружил, что оператор "полузакрытого диапазона" был изменен с.. на.. < ошибка. Всплывающее окно начинает появляться, и подсветка кода начинает сбой.

Решение:

  • Ошибка исправления, обнаруженная Xcode
  • Перейдите на другой .swift в Navigator, вернитесь к оригиналу
  • Подсветка синтаксиса снова появляется, и всплывающее окно "SourceKitService Terminated" исчезло.

Ответ 25

В xcode перейдите в панель меню → window → devices (shift + cmd + 2), появится новое окно, а в левом нижнем углу добавьте новый симулятор, в частности один, запущенный на iOS 8.0, в существующий список edit: вам может потребоваться перезапустить xcode

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

Ответ 26

В моем случае я импортировал отсутствующие файлы в мостовом заголовке. После того, как я удалил неправильный импорт, сообщение об ошибке исчезло.

Ответ 27

У меня была такая же ошибка с вложенным проектом Objective-C ++, который теперь включает Framework с кодом Swift. Чтобы исправить эту проблему, я должен был явно создать фреймворк. Как только я сделал, этот вопрос исчез, и он не возвращается;)

Ответ 28

Все еще происходит с xcode 6 Version 6.0 (6A313)

  • Создать новый проект
  • Добавить структуру и библиотеку
  • Выберите cocoa сенсорный фреймворк
  • Добавить файл Swift
  • Добавить класс в быстрый файл

Сбои

ps: новый mac mini, никаких предыдущих настроек xcode, ничего экзотического. Я полагаю, что это просто бета-продукт.

Ответ 29

Xcode 6.1 Beta 3:

Как только вы определите псевдоним неличного типа (например, typealias Foo = Int) в одном файле Swift, введите букву c в другой файл, из которой произошел сбой SourceKitService.

Решение либо уходит от использования псевдонимов типов, дожидается следующей бета-версии, либо обертывает ваши псевдонимы типов в определения классов:

public class DummyClass {
    public typealias Foo = String
}

и используйте его следующим образом:

var myVar:DummyClass.Foo?

Ответ 30

Изменение цели развертывания в iOS 8.0 работало для меня. Я знаю, что кто-то сказал, что он переместил его в <= 7.1, но эта проблема, похоже, поступает из нескольких источников, поэтому эта альтернатива может работать.