web-dev-qa-db-fra.com

A propos de "La déclaration n'est valide que dans l'étendue du fichier"

J'ai une classe + extension Swift. Après avoir ajouté un délégué que j'ai déclaré dans un autre fichier de la classe, le Xcode indique "La déclaration est valide uniquement à la portée du fichier" sur la ligne d'extension. I Je ne sais pas quel est le problème.

Quelqu'un peut-il m'aider à le réparer?

class ListViewController: UIViewController, AddItemViewControllerDelegate {...}

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

}
48
Dennis

L'erreur est quelque part dans votre ... _ Cette erreur signifie que votre classe ListViewController n'a pas été fermée, donc l'extension est interprétée comme imbriquée à l'intérieur, comme ceci:

class ListViewController {
    ...
    extension ListViewController {
    }
}

Trouvez l'accolade de fermeture manquante et vous devriez résoudre le problème.

95
Nate Cook

L'extension doit être au niveau racine - ne les intégrez pas dans une classe ou quoi que ce soit.

15
Jordan

Assurez-vous que l'extension est déclarée à la fin de votre classe principale et après les dernières accolades "}"

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)
    }
}
15
polarwar

Assurez-vous que votre classe et votre extension sont séparées.

class ViewController: UIViewController {}

extension name: type {}
4
Siddharth Prothia

J'avais mes appels de poste au bas de mon dossier et les plaçais en haut et cela a été corrigé. En bas, ils étaient en dehors de la classe, donc j'étais un peu perplexe et j'ai juste essayé.

0
John Markham