À propos de “la Déclaration est valide uniquement à la portée de fichier”
J'ai une classe+extension swift fichier. Après l'ajout d'un délégué que je l'ai déclaré dans un autre fichier de la classe, Xcode montre "la Déclaration est valide uniquement à la portée de fichier" à la ligne d'extension. Je ne sais pas quel est le problème.
Quelqu'un peut m'aider à résoudre ce problème?
class ListViewController: UIViewController, AddItemViewControllerDelegate {...}
extension ListViewController: UITableViewDataSource{
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
performSegueWithIdentifier("ShowDetail", sender: indexPath)
}
}
- Pouvez-vous montrer le code qui produit cette erreur?
- oui, bien sûr
- juste au cas, assurez-vous que votre poste est en DEHORS de votre classe! 🙂
- L'extension doit être au niveau de la racine - de ne pas les intégrer dans une classe ou autre.
Vous devez vous connecter pour publier un commentaire.
L'erreur est quelque part dans votre
...
— cette erreur signifie que votreListViewController
classe n'a pas fermé, donc l'extension est interprété comme imbriquées à l'intérieur, comme ceci:Trouver le manque de fermeture de corset, et vous devrait résoudre le problème.
UITableViewDelegate
. Si vous souhaitez de se conformer àUITableViewDataSource
, vous avez besoin d'au moinstableView:numberOfRowsInSection:
ettableView:cellForRowAtIndexPath:
.Assurez-vous que l'extension est déclarée à la fin de votre classe principale et après la dernière accolades "}"
L'extension doit être au niveau de la racine - de ne pas les intégrer dans une classe ou autre.
Assurez-vous que votre classe et l'extension sont séparés.
J'ai eu mon extension des appels à bas de mon dossier et de les mettre en haut et qu'il fixe pour moi. Au fond, ils étaient à l'extérieur de l'étendue de classe donc j'étais un peu perplexe et juste essayé ce.