Class + extension 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 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)
}
}
クラスと拡張機能が分離されていることを確認してください。
class ViewController: UIViewController {}
extension name: type {}
ファイルの下部に拡張機能の呼び出しがあり、それらを上部に配置して、それを修正しました。一番下では、それらはクラススコープの外にあったので、少し困惑し、これを試してみました。