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)
}
}
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.
L'extension doit être au niveau racine - ne les intégrez pas dans une classe ou quoi que ce soit.
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)
}
}
Assurez-vous que votre classe et votre extension sont séparées.
class ViewController: UIViewController {}
extension name: type {}
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é.