在Swift中的两个不同对象上调用相同的函数

Jas*_*ach 3 swift swift-protocols

我有两个不相关的对象(第三方API)具有一些相同的属性.我想要一个调用的辅助方法,它将从属性中提取数据并构建一个NSDate对象但theObject.valueForKey似乎不起作用.

我试过这个功能签名func foo<T: NSObject where T: NSObjectProtocol>(record: T) -> NSDate? { ... }但没有运气.

有什么想法吗?

JAL*_*JAL 5

这是协议的用途:

class ClassOne {
    var dateInfo: String = ""
}

class ClassTwo {
    var otherDateInfo: String = ""
}

protocol DateBuildingProtocol {
    func buildDateFromDateInfo() -> NSDate
}

extension ClassOne: DateBuildingProtocol {
    func buildDateFromDateInfo() -> NSDate {
        // do something with self.dateInfo
        return NSDate()
    }
}

extension ClassTwo: DateBuildingProtocol {
    func buildDateFromDateInfo() -> NSDate {
        // do something with self.otherDateInfo
        return NSDate()
    }
}
Run Code Online (Sandbox Code Playgroud)

协议赋予您一些其他语言具有的多重继承的能力.基本上,您声明了一个两个类都应该具有的方法,并在每个类上实现该方法以使用您需要的特定变量.