Swift中的NSDate()与NSDate.date()

2020/12/16 02:51 · ios ·  · 0评论

我跟随Bloc.io Swiftris教程,在其中他们通过以下方式初始化日期:

lastTick = NSDate.date()

导致编译错误:

'date()' is unavailable: use object construction 'NSDate()'

哪个应该等于:

NSDate *lastTick = [NSDate date];

(来自NSDate参考

自从我看到其他使用示例以来,Apple是否将Swift界面更改为NSDateNSDate.date

这仅仅是NSDate还是您不能为任何Objective-C API调用类型方法?

[NSDate date] 是用于构造NSDate对象的工厂方法。

如果您阅读指南“将Swift与Cocoa和Objective-C结合使用”,则有一节与Objective-C api进行交互:

为了保持一致性和简化性,Objective-C工厂方法被映射为Swift中的便利初始化程序。这种映射使它们可以使用与初始化程序相同的简洁明了的语法。”

摘录自:Apple Inc.“将Swift与Cocoa和Objective-C结合使用”。iBooks。https://itun.es/gb/1u3-0.l

所以工厂方法:

[NSDate date]

在Swift中被转换为初始化器

NSDate()

您不仅可以在NSDate上找到这种模式,还可以在其他带有工厂方法的Cocoa API中找到该模式。

看来这NSDate()是新语法。以前NSDate.date()工作过

但是现在你应该使用 NSDate()

在Objective-C中,[NSDate date]只需调用[[NSDate alloc] init]因此,您无需调用NSDate.date()Swift。只需调用即可NSDate()使用当前日期初始化一个日期对象。

苹果是否将Swift界面更改为NSDate

是的,他们做了。对我来说,编译器告诉:

Foundation.NSDate:3:26:注意:“ date()”已在此处明确标记为不可用:

@objc(date) class func date() -> Self!

因此它被明确标记为Swift不可用。这意味着它已正式被弃用。

本文地址:http://ios.askforanswer.com/swiftzhongdensdateyunsdate-date.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!