gpt4 book ai didi

objective-c - 将 NSDate 类别与 Swift 3 日期类型一起使用

转载 作者:IT王子 更新时间:2023-10-29 05:37:10 27 4
gpt4 key购买 nike

我在 NSDate 上有一个 Obj-C 类别,我正在尝试将该类别中的函数与 Swift 的 Date 结构一起使用。

有没有一种干净的方法可以做到这一点,而不必每次都强制转换或不必从 Date 或其他一些丑陋的 hack 创建 NSDate 实例?

还是我坚持必须将我的对象定义为 NSDate 而不是 Date?

Apple 提到 here那个

The Swift overlay to the Foundation framework provides the Date structure, which bridges to the NSDate class. The Date value type offers the same functionality as the NSDate reference type, and the two can be used interchangeably in Swift code that interacts with Objective-C APIs. This behavior is similar to how Swift bridges standard string, numeric, and collection types to their corresponding Foundation classes.

,所以我的问题是如何使用我的 Date 对象使用干净的最少代码访问我的 NSDate 类别中的额外功能?

作为引用,我使用的是 Swift 3。

最佳答案

Swift 的 3 种桥接类型是通过对其对应的 Objective-C 对象的内部引用来实现的。因此,类似于“继承之上的组合”原则,您可以在 Swift 中声明您感兴趣的方法,然后简单地转发调用。

例如,如果您在 Objective-C 中有以下方法:

@interface NSDate(MyAdditions)
- (NSString*)myCustomNicellyFormattedDate;
@end

您可以向 Date 添加一个简单的转换和转发的扩展:

extension Date {
var myCustomNicellyFormattedDate: String {
return (self as NSDate).myCustomNicellyFormattedDate()
}
}

这种方法的优点是该方法在 Objective-C 和 Swift 中都可用,而且几乎没有开销和维护问题。最重要的是,没有代码重复。

关于objective-c - 将 NSDate 类别与 Swift 3 日期类型一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39706054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com