О "Декларации действует только в области файлов"
У меня есть файл с расширением класса+. После добавления делегата, который я объявил в другом файле для класса, Xcode показывает, что "Декларация действительна только в области файлов" в строке расширения. Я не знаю, в чем проблема.
Может ли кто-нибудь помочь мне исправить это?
class ListViewController: UIViewController, AddItemViewControllerDelegate {...}
extension ListViewController: UITableViewDataSource{
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
performSegueWithIdentifier("ShowDetail", sender: indexPath)
}
}
Ответы
Ответ 1
Ошибка находится где-то в вашей ...
- эта ошибка означает, что ваш класс ListViewController
не закрывался, поэтому расширение интерпретируется как вложенное внутри, например:
class ListViewController {
...
extension ListViewController {
}
}
Найдите недостающую закрывающую фигуру, и вы должны решить эту проблему.
Ответ 2
Убедитесь, что расширение указано в конце вашего основного класса и после последних фигурных скобок "}"
class ListViewController: UIViewController, AddItemViewControllerDelegate {
//Make sure that everything is clean here!
}
extension ListViewController: UITableViewDataSource{
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
performSegueWithIdentifier("ShowDetail", sender: indexPath)
}
}
Ответ 3
Расширение должно быть на корневом уровне - не вставлять их в класс или что-то еще.
Ответ 4
Убедитесь, что ваш класс и расширение разделены.
class ViewController: UIViewController {}
extension name: type {}
Ответ 5
У меня были вызовы расширений внизу моего файла, и я поместил их сверху, и это исправило это для меня. Внизу они были вне рамок класса, поэтому я был немного озадачен и просто попробовал это.
Ответ 6
Я нашел недостающую скобу, и это решило проблему :)