Набор спрайтов Xcode 6 - SourceKitService прекращен
Я получил SourceKitService прекращено, когда я реализую этот метод:
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!)
если я удалю !, оно работает. Но тогда я получил ошибку в моем коде, конечно. Полный код:
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if nodeAtPoint(location).name == "plane" {
println("plane touched")
}
}
}
2 ответа
Эта ошибка случилась и со мной. Я решил это сейчас, сначала преобразовав NSSet в NSArray, а затем воспользовавшись циклом for..in. Это не сбой:
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {
super.touchesBegan(touches, withEvent: event)
let touchArray: NSArray = touches.allObjects
for element in touchArray {
println("\(element)")
}
}
Запуск на бета4, и я смог объявить метод без проблем. for touch: AnyObject in touches {
похоже, проблема, так как, когда я заменяю AnyObject
с UITouch
, что более конкретно к тому, что вы хотите получить, я получаю ошибку компилятора: NSSet! cannot be implicitly downcast to UITouch
, что означает, что синтаксис пытается привести массив к типу. Казалось бы, кастовать предмет пока невозможно. См. Ошибка аннотации в Swift для цикла с массивом и UIView. Вот тот же код тела без ошибок компилятора:
for item in touches {
let location = (item as UITouch).locationInNode(self)
if self.nodeAtPoint(location).name == "plane" {
println("plane touched")
}
}
Ошибок было недостаточно, чтобы вызвать сбой SourceKit для меня. Может быть, у вас есть другие проблемные области в коде?