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

标签 swift swift-protocols

我有两个不相关的对象(第 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/

相关文章:

swift - 在运行时检查协议(protocol)继承

xcode - 无法使用 Dictionary<Generic, Generic> 类型的参数列表调用 <function>

swift - 如何从 CLGeocoder geocodeAddressString() 中的完成处理程序更新列表中的地址

objective-c - 在 Swift 中传递 @protocol 类型

swift - 通用协议(protocol)方法 swift 无法将类型识别为类型

swift - 包含所有扩展方法的 Swift 模块

ios - 核心数据: Select entities matching certain criteria

arrays - Int类型不符合协议(protocol)顺序

快速 UIDynamicAnimator 崩溃

swift - 尝试使用 PAT 应用扩展时出现不符合协议(protocol)错误