У меня проблема с XCode, когда появляется ошибка «Служба исходного комплекта прекращена», а вся подсветка синтаксиса и завершение кода исчезают в Swift. Как я могу это исправить?
Вот пример изображения:
У меня проблема с XCode, когда появляется ошибка «Служба исходного комплекта прекращена», а вся подсветка синтаксиса и завершение кода исчезают в Swift. Как я могу это исправить?
Вот пример изображения:
Ответы:
Мой ответ (Xcode6-Beta7) был просто удалить папку «Производные данные».
Preferences > Locations > Derived Data > click the arrow to open in Finder > trash it.
Надеюсь, это кому-нибудь поможет. Очевидно, есть много причин, по которым этот сбой может произойти.
Я полагаю, что, возможно, нашел решение более общего назначения. Ниже приведены шаги, которые я использовал, чтобы Xcode не выдавал SourceKitService Terminated
ошибку.
Error running playground: Failed prepare for communication with playground.
см. Это изображение в твиттере .OS X
доiOS
, я получал еще одну ошибку (к сожалению, я ее не записывал).SourceKitService Terminated
проблему в этой теме.IDEPlaygroundDocument: Error encountered running playground
com.apple.CoreSimulator.CoreSimulatorService[3952]: The runtime for the selected device is not installed.
Если у вас возникла проблема только в контексте проекта Swift, попробуйте сначала в одиночку. Если это не сработает, попробуйте выполнить все шаги ниже.
Более длительный и сложный процесс. (Первые 3 шага не очень полезны, но я их сделал, поэтому запишите их здесь)
OS X
на iOS
.Похоже, проблема в том, что Xcode6 не может правильно найти симулятор и подключиться к нему. Я не смог определить, почему это так, но это позволило мне продолжить разработку со Swift. Это может быть связано с тем, что двоичные файлы симулятора, кажется, переместились .
Вам просто нужно удалить «ModuleCache», это какой-то кеш, используемый XCode для автозаполнения.
Скопируйте и вставьте следующую строку в Терминал:
rm -rf ~ / Библиотека / Разработчик / Xcode / DerivedData / ModuleCache
SourceKitService падает в моей системе, как только я набираю
extension foo {
Я использую Xcode 6 beta 6, и это не имеет значения, если я введу его в пустой файл или добавлю в существующий. Как только источник содержит один extension
блок, происходит сбой. Это происходит даже на вновь созданных проектах.
Мое «решение» - избегать расширения в источниках, над которыми я сейчас работаю. Я закомментирую конец блока класса и начало блока расширения. Как только я закончил свою работу в классе, я комментирую их снова:
class MyClass {
[... my stuff ...]
//}
//
//extension MyClass {
}
Это начало происходить в моем проекте spritekit после вставки функции touchesMoved. Эта функция использует принудительное развертывание, которое, кажется, вызывает проблему:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)
После удаления восклицательных знаков и, следовательно, прекращения принудительного развертывания, SourceKitService перестала падать.
Надеюсь это поможет!
Я нашел решение на форумах разработчиков Apple (которое требует входа в систему, поэтому я объясню и здесь).
TLDR : не импортируйте @protocol
в заголовок моста Objective-C для Swift имя, совпадающее с именем@interface
. Например, Facebook SDK имеет протокол и интерфейс с именем «FBGraphObject».
Вот сообщение на форуме:
Добавление Facebook SDK приводит к сбою SourceKitService. Если вы хотите использовать бета-версию 3 и вам нужен Facebook SDK, одна из работ, которую я нашел и работаю для меня, - это рефакторинг @protocol FBGraphObject Facebook SDK и переименование его в нечто вроде @protocol FBGraphObjectProtocol в качестве @interface FBGraphObject, также существует и, по-видимому, SourceKit это не нравится
Это, безусловно, временное решение, просто для поддержания вашей функциональности, и вам придется использовать Cocoapods или иным образом создавать SDK Facebook, а не использовать библиотеку фреймворков.
В настоящее время вам необходимо убедиться, что у вас нет конфликтующих объявлений @protocol и @interface, и это включает сторонние библиотеки, которые вы, возможно, используете.
Это стоило мне сегодня, надеюсь, это поможет!
Опубликовано e.parto на 10 июля 2014
3.17.1
Используйте другое имя, чем Swift для проекта. «Свифт» зарезервирован.
UIView
.
Чтобы это исправить, у вас могут возникнуть странные проблемы с кодом Swift. Например, иметь несколько определений IBOutlets, потому что вы были в процессе копирования и вставки. обычно это просто синтаксическая ошибка, которая не может быть обработана.
Я обнаружил, что путем явного (статического) набора типов переменных, а не их вывода, я решил эту проблему.
Выйдите из Xcode, если он открыт. Затем из терминала запустить:
defaults delete com.apple.dt.Xcode
Это восстановит Xcode к настройкам по умолчанию. Откройте XCode, и все должно работать снова.
Для меня (xcode 6.1) причина была в том, что я забыл перенести свой подкласс в протокол.
Например, это неправильно:
protocol SomeProtocol { ... }
class A :NSObject, SomeProtocol {
...
}
class B : A {
...
}
и это нормально
protocol SomeProtocol { ... }
class A : NSObject, SomeProtocol {
...
}
class B : A, SomeProtocol {
...
}
Программа, состоящая только из этих двух строк (возможно, неправильная с точки зрения синтаксиса Swift), достаточна для того, чтобы вызвать ошибку «SourceKitService Termination» здесь:
var x = 42
println("Hello", x)
Использование let
вместо var
заставляет редактор снова вести себя нормально. Версия Xcode 6.0 (6A215l)
Сегодня println
возникла та же проблема, с чем я столкнулся, я только что попробовал старый стиль NSLog, чтобы напечатать значение:
// something like this
println("value = %@", valueObj)
Способ, которым мы должны составлять строки в swift, эволюционировал от стиля printf к встроенному стилю, так что теперь вы встраиваете свои значения прямо в строку формата следующим образом:
"Here goes \(YOUR_VARIABLE)"
Итак, для приведенного выше примера решение таково:
println("value =\(valueObj)")
У меня была такая же проблема с Xcode6 beta 3 для проекта, созданного в beta 2.
Это было из-за новых критических изменений в быстром языке, то есть синтаксиса объявления массива.
Проверьте исправленный код из-за критических изменений в бета-версии 3.
Один из примеров в моем случае был:
Я должен был изменить:
var tabBarController : UITabBarController = self.window?.rootViewController as UITabBarController;
в
var tabBarController : UITabBarController = self.window!.rootViewController as UITabBarController
Вывод: похоже, что если в исходном коде есть ошибка, в некоторых случаях эта ошибка создается Xcode.
Решение, пока ошибка не будет устранена: проверьте ее вручную :)
Удачи!
Решением для меня стало изменение симулятора. Я использовал iPhone 5S для своего симулятора, и когда я переключил его на iPhone 5, все работало отлично. Надеюсь, в будущей версии это будет исправлено.
Я обнаружил, что удаление производных данных из терминала решает проблему до следующего сбоя. : S
Он находится по адресу: / Пользователи / {Имя пользователя} / Библиотека / Разработчик / Xcode / DerivedData / {Имя проекта} - {Случайная последовательность символов}
Надеюсь, это поможет.
Я думаю, что я выяснил одну (поскольку их, вероятно, много) из причин, по которым это происходит.
В моем случае я импортировал файлы Objective C через заголовок моста, который имел одно из следующих истинных значений:
Фиксирование целей приложения в файлах Objective-C ИЛИ удаление импорта этих файлов из заголовка Bridging все вместе, кажется, решает проблему.
К сведению - если вам нужно установить целевой файл заголовка (.h), который не имеет файла реализации (.m), вы можете выполнить следующие простые шаги: Не можете изменить видимость целевого членства в Xcode 4.5
Просто чтобы добавить еще одно потенциальное решение, я случайно назвал класс var тем же именем, что и его тип:
class var Settings:Settings {
get { return classVarWorkAround.settings }
}
Это приведет к краху SourceKit для уверенности. Глупая синтаксическая ошибка, но в случае, если кто-то другой сделает такую же ошибку.
Редактировать: также в соответствии с @Portland Runner:
Точно так же, если вы установите тип возвращаемого значения в имя функции, вы получите ошибку.
func foo() ->foo{}
func foo() ->foo{}
(не стесняйтесь добавлять его в свой ответ)
Когда эта ошибка начинает появляться, просто закомментируйте последний / последний фрагмент кода, который вы написали, и подождите некоторое время. Подсветка синтаксиса должна появиться снова. Вот как я обхожу проблему.
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)
}
Об этом сообщает Apple (# 17266321):
Подробности:
Сводка: если мы пытаемся напечатать словарь со значением в виде массива, всплывающее окно продолжает выдавать сообщение: «SourceKit прекращен. Функциональность редактора временно ограничена». Xcode зависает и теряет распознавание контекста, в результате чего текст становится черным.
Шаги для воспроизведения: 1. Создайте массив как - "var iOSHistoryArray = [" iOS6 "," iOS7 "," iOS8 ",]"
Создайте словарь как - "var MacOSYosemiteFeatures: Dictionary = [" Устройство ": iOSHistoryArray]".
Распечатать словарь как - "println (" Словарь, содержащий значение массива:% @ \ n ", MacOSYosemiteFeatures)" (<< - Culprit - >>)
Шаг 3 вызывает комментирование проблемы, которое делает функциональность XCode снова.
Ожидаемые результаты: Xcode должен работать нормально.
Фактические результаты: Xcode становится нефункциональным, теряет распознавание контекста (весь шрифт теряется, а весь текст становится черным), весь Xcode становится неактивным.
Версия: версия 6.0 (6A215l)
Попытайся:
В компиляторе / индексаторе Swift есть ошибка. Некоторые строки или строки в вашем коде создают трудности. Вам нужно будет отредактировать свой код с помощью другого текстового редактора, чтобы закомментировать строки (строки), вызывающие оскорбления, прежде чем вы сможете открыть этот проект с помощью Xcode. Если вы не знаете, в чем проблема, закомментируйте весь ваш код. После того, как вы откроете проект, вы можете постепенно возвращать код, пока повышение активности процессора не скажет вам, что вы нашли проблему.
Проблема:
Мой случай: установлена бета-версия 3, проект только для OSX, один файл обнаружил ошибку «оператор полузакрытого диапазона был изменен с .. на .. <». Всплывающее окно начинает появляться, и подсветка кода начинает терпеть неудачу.
Решение:
В xcode перейдите в строку меню >> окно >> устройства (shift + cmd + 2), появится новое окно, а слева внизу добавьте новый симулятор, в частности, тот, который работает на iOS 8.0, к редактированию существующего списка. : вам может понадобиться перезапустить xcode
ссылка: http://www.reddit.com/r/swift/comments/2bznfo/error_running_playground_unable_to_find_suitable/
У меня была та же ошибка с вложенным проектом Objective-C ++, который теперь включает Framework с кодом Swift. Чтобы решить эту проблему, мне пришлось явно построить фреймворк. Как только я это сделал, проблема исчезла и больше не возвращается;)
Все еще происходит с версией 6.0 xcode 6 (6A313)
Сбои
ps: новый Mac mini, никаких предыдущих установок xcode, ничего экзотического. Полагаю, просто бета-продукт.
Xcode 6.1 Beta 3:
Как только вы определили псевдоним не закрытого типа (например, typealias Foo = Int
) в одном файле Swift, введите букву c
в другом файле, исходный сбой SourceKitService.
Решение - либо отказаться от использования псевдонимов типов, дождаться следующей бета-версии или включить псевдонимы типов в определения классов:
public class DummyClass {
public typealias Foo = String
}
и используйте это так:
var myVar:DummyClass.Foo?