关于“声明只在文件范围内有效”

我有一个类+扩展swift文件。 在将另一个文件中声明的委托添加到类后,Xcode在扩展行中显示“声明仅在文件范围内有效”。 我不知道问题是什么。

任何人都可以帮我解决它?

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

该错误是在你的... – 该错误意味着你的ListViewController类没有被closures,所以扩展被解释为嵌套在里面,像这样:

 class ListViewController { ... extension ListViewController { } } 

find失踪的大括号,你应该解决这个问题。

确保扩展名在主类最后,最后一个大括号“}”之后声明

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

扩展必须在根本层面 – 不要将它们embedded到类或其他类中。