У меня возникла проблема с Xcode, где появляется сообщение об ошибке "Служба исходного набора завершена", и вся подсветка синтаксиса и завершение кода ушли в Swift. Как я могу это исправить?
Вот пример изображения:
У меня возникла проблема с Xcode, где появляется сообщение об ошибке "Служба исходного набора завершена", и вся подсветка синтаксиса и завершение кода ушли в Swift. Как я могу это исправить?
Вот пример изображения:
Ответ на мой (Xcode6-Beta7) был просто для удаления папки Derived Data.
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 ~/Library/Разработчик/Xcode/DerivedData/ModuleCache
SourceKitService сбой в моей системе, как только я набираю
extension foo {
Я использую Xcode 6 beta 6, и не имеет значения, буду ли я вводить его в пустой файл или добавлять его в существующий. Как только источник содержит один блок extension
, он сработает. Это происходит даже во вновь созданных проектах.
Мое "решение" заключается в том, чтобы избежать расширения в источниках, в которых я сейчас работаю. Я комментирую конец блока класса и начало блока расширения. Как только я закончил свою работу над классом, я снова прокомментирую их:
class MyClass {
[... my stuff ...]
//}
//
//extension MyClass {
}
Это начало происходить в моем проекте spritekit после вставки touch-функцийMoved-function. Эта функция использует принудительное разворачивание, что, по-видимому, вызывает проблему:
override func touchesMoved(touches: NSSet!, withEvent event: UIEvent!)
После удаления восклицательных знаков и, таким образом, остановки принудительной разворачивания, SourceKitService перестает сбой.
Надеюсь, это поможет!
Я нашел решение на форумах разработчиков 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 года
Используйте другое имя, кроме Swift для проекта. "Swift" зарезервирован.
У меня была эта проблема каждые несколько секунд в Xcode 6 Beta 3, и она продолжалась даже в совершенно новых проектах. Я изменил цель развертывания с 8.0 до 7.1 и он остановился.
Ваш проект называется Swift
? Увидев это сообщение, сборка также будет неудачной (<unknown>:0: error: module name "Swift" is reserved for the standard library
). Попробуйте использовать другое название проекта, например SwiftTest
. Это сработает.
Чтобы исправить это, у вас может возникнуть какая-то странная проблема с вашим кодом 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":
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 для проекта, созданного в бета-версии 2.
Это было связано с новыми нарушениями в быстром языке, например синтаксисе объявления массива.
Проверьте полученный код из-за нарушения изменений в бета-версии 3.
Один из примеров в моем случае:
Мне пришлось изменить:
var tabBarController : UITabBarController = self.window?.rootViewController as UITabBarController;
to
var tabBarController : UITabBarController = self.window!.rootViewController as UITabBarController
Заключение: Похоже, если в исходном коде есть ошибка, в некоторых случаях эта ошибка возникает с помощью Xcode.
Решение до устранения ошибки: Проверьте ошибку вручную:)
Гудлак!
Решение для меня, похоже, изменило симулятор. Я использовал iPhone 5S для своего симулятора, и когда я переключил его на iPhone 5, все работало отлично. Надеюсь, что будущая версия полностью исправит его.
Я обнаружил, что удаление полученных данных из терминала разрешает проблему до следующего сбоя.: S
Он расположен по адресу:/Users/{User name}/Library/Developer/Xcode/DerivedData/{Project Name} - {Random char sequence}
Надеюсь, это поможет.
Я думаю, что я вычислил один (как, вероятно, много) причин, по которым это происходит.
В моем случае я импортировал файлы Objective-C через заголовок Bridging Header, который имел одно из следующих значений:
Фиксирование целевых объектов приложения в файлах Objective-C ИЛИ удаление импорта этих файлов в заголовочном заголовке вместе, похоже, устраняет проблему.
FYI. Если вам нужно установить целевой файл заголовка (.h), у которого нет файла реализации (.m), вы можете выполнить следующие простые шаги: Невозможно изменить видимость целевого членства в Xcode 4.5
Чтобы добавить еще одно потенциальное решение здесь, я случайно назвал класс var тем же именем, что и его тип:
class var Settings:Settings {
get { return classVarWorkAround.settings }
}
Это приведет к сбою SourceKit FOR SURE. Глупо синтаксическая ошибка, но в случае, если кто-то другой совершит ту же ошибку.
Изменить: также в соответствии с @Portland Runner:
Аналогично, если вы установите тип возврата на имя func, вы получите сообщение об ошибке.
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 ")," (<p>
Шаг 3 вызывает комментирование проблемы, что делает функциональность Xcode еще раз.
Ожидаемые результаты: Xcode должен нормально функционировать.
Фактические результаты: Xcode становится нефункциональным, теряет распознавание контекста (весь шрифт потерян и весь текст становится черным), весь Xcode становится неактивным.
Версия: Версия 6.0 (6A215l)
Попробуйте:
В компиляторе/индексаторе Swift имеется ошибка. Некоторые строки или строки в ваш код создает трудности. Вам нужно будет отредактировать код с некоторым другим текстовым редактором, чтобы прокомментировать строку (-ы) прежде чем вы сможете открыть этот проект с помощью Xcode. Если у вас есть не знаю, в чем проблема, закомментируйте весь свой код. Как только вы проект открыт, вы можете начать возвращать код понемногу пока повышение активности процессора не сообщит вам, что вы нашли проблема.
Проблема:
Мой случай: установлен бета-версия 3, только проект OSX, один файл обнаружил, что оператор "полузакрытого диапазона" был изменен с.. на.. < ошибка. Всплывающее окно начинает появляться, и подсветка кода начинает сбой.
Решение:
В 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/
В моем случае я импортировал отсутствующие файлы в мостовом заголовке. После того, как я удалил неправильный импорт, сообщение об ошибке исчезло.
У меня была такая же ошибка с вложенным проектом Objective-C ++, который теперь включает Framework с кодом Swift. Чтобы исправить эту проблему, я должен был явно создать фреймворк. Как только я сделал, этот вопрос исчез, и он не возвращается;)
Все еще происходит с xcode 6 Version 6.0 (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?
Изменение цели развертывания в iOS 8.0 работало для меня. Я знаю, что кто-то сказал, что он переместил его в <= 7.1, но эта проблема, похоже, поступает из нескольких источников, поэтому эта альтернатива может работать.