我有两个不相关的对象(第 3 方 API),它们具有一些相同的属性。我想要调用一个辅助方法,它将从属性中提取数据并构建一个 NSDate
对象但是theObject.valueForKey
似乎不起作用。
我试过这个函数签名func foo<T: NSObject where T: NSObjectProtocol>(record: T) -> NSDate? { ... }
但没有运气。
有什么想法吗?
最佳答案
这就是协议(protocol)的用途:
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()
}
}
协议(protocol)赋予您某些其他语言所具有的多重继承能力。基本上,您声明两个类都应具有的方法,并在每个类上实现该方法以使用您需要的特定变量。
关于swift - 在 Swift 中的两个不同对象上调用相同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36871449/