2016-09-20 65 views
3

我的所有類別都是爲NSDate,NSString編寫的... 遷移到Swift 3現在將所有NSDate屬性更改爲Date(在swift文件中)。現在 我無法從Swift中Date類型的屬性中調用我的NSDate + Additions類別方法。我的類別NSDate + Api現在不適用於Swift中的Date類(在遷移到Swift 3和Swift互操作性後)

所以,比如我有此類別中的OBJÇ

@interface NSDate (Additions) 

- (BOOL)isTimedOut; 

@end 

而且我有一個包含快捷文件:

let date: Date = Date.init() 
let isTimedOut = date.isTimedOut() 

直到現在我提出了兩個解決方案:

First is to cast so it would be 
let isTimedOut = (date as NSDate).isTimedOut() 

另一種解決方案是使用所有方法創建Date擴展,並從每個方法調用obj C方法。

我想知道是否有一種方法可以讓編譯器自動生成swift日期擴展(不是NSDate)。 贊:

@interface NSDate (KDApi) NS_SWIFT_NAME(Date); 

我試過了,它沒有工作。

回答

1

這是swift 3.0的預期行爲。蘋果的開發人員證實了這一點。 NSDate和日期是不同的類型和NSDate到日期擴展的(類別)不橋接。但是在NSString和String的情況下。