扩展:使用未声明类型的错误

时间:2017-10-02 16:11:19

标签: swift

我是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)"
    }
}

我认为扩展会走向最低点,有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您的Dog类在ViewController类中“隐藏”。在顶级声明它或将其称为ViewController.Dog

答案 1 :(得分:0)

问题是你已经在另一个类(Dog)中声明了一个类(ViewController) - 这首先是 don&#t; - 所以班级在另一个之外是不可见的。此外,您不必将扩展名放在文件的最后。

解决方案

移动课程:

class ViewController: UIViewController { ... }

class Dog {}

extension Dog {}

解决方案#2

更改您对班级的引用方式:

extension ViewController.Dog {}