Swift 扩展名:使用未声明的类型时出错

Swift 扩展名:使用未声明的类型时出错,swift,Swift,我是swift新手,我想创建Dog类的扩展: class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() } public class Dog { var name = "Timmy" } } extension Dog { func description() -> String {

我是swift新手,我想创建Dog类的扩展:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    public class Dog {
        var name = "Timmy"
    }
}

extension Dog {
    func description() -> String {
        return "A dog named \(self.name)"
    }
}

我认为扩展是最底层的,有人能帮我吗?

你的狗类“隐藏”在你的ViewController类中。在顶层声明它或将其称为
ViewController.Dog
问题是您在另一个类(
ViewController
)中声明了一个类(
Dog
)-这首先是一个禁忌-因此该类在另一个类之外不可见。此外,您不必在文件的末尾添加扩展名

解决方案 移动类:

class ViewController: UIViewController { ... }

class Dog {}

extension Dog {}
extension ViewController.Dog {}
解决方案#2 更改引用该类的方式:

class ViewController: UIViewController { ... }

class Dog {}

extension Dog {}
extension ViewController.Dog {}

如果你愿意,看看我的书: