Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 关于「;声明仅在文件范围内有效";_Ios_Swift_Delegates - Fatal编程技术网

Ios 关于「;声明仅在文件范围内有效";

Ios 关于「;声明仅在文件范围内有效";,ios,swift,delegates,Ios,Swift,Delegates,我有一个班级和分机Swift档案。将我在另一个文件中声明的委托添加到类后,Xcode显示此错误 声明仅在文件范围内有效 在延长线。我不知道是什么问题 有人能帮我修一下吗 class ListViewController: UIViewController, AddItemViewControllerDelegate {...} extension ListViewController: UITableViewDataSource{ func tableView(tableView: U

我有一个班级和分机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
类没有关闭,因此扩展被解释为嵌套在内部,如下所示:

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