簡體   English   中英

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

[英]NSDate() vs NSDate.date() in Swift

我跟隨Bloc.io Swiftris教程 ,他們通過以下方式初始化日期:

lastTick = NSDate.date()

這導致編譯錯誤:

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

哪個應該相等:

NSDate *lastTick = [NSDate date];

(來自NSDate參考

Apple是否將Swift接口更改為NSDate ,因為我看過其他使用NSDate.date示例?

這只是NSDate還是你不能為任何Objective-C API調用類型方法?

[NSDate date]是用於構造NSDate對象的工廠方法。

如果您閱讀“使用Swift with Cocoa和Objective-C”指南,則有一節與Objective-C apis進行交互:

為了一致性和簡單性,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] 因此,您不需要在Swift中調用NSDate.date() 只需調用NSDate()就會使用當前日期初始化日期對象。

Apple是否將Swift界面更改為NSDate

是的,他們確實。 對我來說,編譯器告訴:

Foundation.NSDate:3:26:注意:'date()'在這里明確標記為不可用:

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

因此,Swift明確標記為不可用。 這意味着它已被正式棄用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM