在Swift中从不同类调用相同的属性?

在Swift中从不同类调用相同的属性?,swift,Swift,如果我有两个显式类,它们都具有相同的属性名,有没有一种方法可以调用该属性而不必定义我使用的是哪个类 class firstClass { var name = “Name” init….. } class secondClass { var name = “Another name” init…. } now another function can call //does not work... I get an error saying AnyO

如果我有两个显式类,它们都具有相同的属性名,有没有一种方法可以调用该属性而不必定义我使用的是哪个类

class firstClass {
    var name = “Name”

    init…..
}

class secondClass {
    var name = “Another name”

    init….

}


now another function can call

//does not work... I get an error saying AnyObject doesn't have property
func printNameOf(object: AnyObject) {
    println(object.name)
}

//works but my software has a lot of classes, which means a ton of code
func printNameOf(object: AnyObject) {
    if object is firstClass {
        println((object as firstClass).name)
    }

    if object is secondClass {
        println((object as secondClass).name)
    }
}

您可以通过创建两个类都符合的协议来实现这一点:

protocol NameProtocol {
    var name: String {get set}
}

class firstClass: NameProtocol {
    var name = "Name 1"
}

class secondCLass: NameProtocol {
    var name = "Name 2"
}

func printNameOf(obj: NameProtocol) {
    // You know obj has property name
    println(a.name)
}

如果我使用的是苹果提供的使用任何对象的函数呢?这可能吗?printNameOfobj:AnyObject而不是printNameOfobj:NameProtocol假设您可以更改类,您仍然可以使用协议,然后在我假设您实现/重写的函数中,您可以只检查一次AnyObject是否是NameProtocol。