Ios 关于「;声明仅在文件范围内有效";
我有一个班级和分机Swift档案。将我在另一个文件中声明的委托添加到类后,Xcode显示此错误 声明仅在文件范围内有效 在延长线。我不知道是什么问题 有人能帮我修一下吗Ios 关于「;声明仅在文件范围内有效";,ios,swift,delegates,Ios,Swift,Delegates,我有一个班级和分机Swift档案。将我在另一个文件中声明的委托添加到类后,Xcode显示此错误 声明仅在文件范围内有效 在延长线。我不知道是什么问题 有人能帮我修一下吗 class ListViewController: UIViewController, AddItemViewControllerDelegate {...} extension ListViewController: UITableViewDataSource{ func tableView(tableView: U
class ListViewController: UIViewController, AddItemViewControllerDelegate {...}
extension ListViewController: UITableViewDataSource{
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
performSegueWithIdentifier("ShowDetail", sender: indexPath)
}
}
错误在您的
…
中的某个地方-该错误意味着您的ListViewController
类没有关闭,因此扩展被解释为嵌套在内部,如下所示:
class ListViewController {
...
extension ListViewController {
}
}
找到缺少的右大括号,应该可以解决问题。确保在主类末尾和最后一个花括号“}”之后声明扩展名
扩展必须在根级别-不要将它们嵌入到类或任何东西中。确保类和扩展是分开的
class ViewController: UIViewController {}
extension name: type {}
我把我的分机呼叫放在文件的底部,然后放在顶部,这样我就解决了这个问题。在底部,它们超出了类的范围,所以我有点困惑,只是尝试了一下。扩展应该在类之外
class ListViewController: UIViewController, AddItemViewControllerDelegate {...}
// Code...
}
extension ListViewController: UITableViewDataSource{
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
performSegueWithIdentifier("ShowDetail", sender: indexPath)
}
您能显示产生此错误的代码吗?@0x7fffffff♦ 是的,为了以防万一,请确保您的扩展在您的类之外!:)扩展必须在根级别-不要将它们嵌入到类或任何东西中。谢谢回复。我只是仔细检查了我的代码,这个类肯定是关闭的。或者是一致性协议的问题?哦,对了,也许错误信息很糟糕。该方法实际上属于
UITableViewDelegate
。如果要符合UITableViewDataSource
,至少需要tableView:numberOfRowsInSection:
和tableView:cellForRowAtIndexPath:
。是的,我的右大括号位置不正确。谢谢
class ListViewController: UIViewController, AddItemViewControllerDelegate {...}
// Code...
}
extension ListViewController: UITableViewDataSource{
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
performSegueWithIdentifier("ShowDetail", sender: indexPath)
}