Подтвердить что ты не робот

О "Декларации действует только в области файлов"

У меня есть файл с расширением класса+. После добавления делегата, который я объявил в другом файле для класса, Xcode показывает, что "Декларация действительна только в области файлов" в строке расширения. Я не знаю, в чем проблема.

Может ли кто-нибудь помочь мне исправить это?

class ListViewController: UIViewController, AddItemViewControllerDelegate {...}

extension ListViewController: UITableViewDataSource{
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
        performSegueWithIdentifier("ShowDetail", sender: indexPath)
    }

}
4b9b3361

Ответ 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

Я нашел недостающую скобу, и это решило проблему :)