2016-09-20 16 views
3

NSDate、NSString用に書かれたすべてのカテゴリに問題があります... The Migration to Swift 3すべてのNSDateプロパティをDateに変更します(スウィフトファイル)。今すぐ SwiftのDate型のプロパティからNSDate + Additionsカテゴリメソッドを呼び出すことができません。マイカテゴリーNSDate + ApiはSwiftのDateクラスでは動作しません(Swift 3への移行後およびSwift相互運用性後)

だから、例えば私がobj C

@interface NSDate (Additions) 

- (BOOL)isTimedOut; 

@end 

でこのカテゴリがあると私は含んで迅速なファイルがあります:

First is to cast so it would be 
let isTimedOut = (date as NSDate).isTimedOut() 
:今私は2つの解決策を考え出すまで

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

別の解決策は、すべてのメソッドでDate拡張を作成し、各メソッドからobj Cメソッドを呼び出すことです。

私はswift Date拡張子(NSDateではなく)を自動生成するために何とかコンパイラに伝える方法があるかどうかを知りたいと思います。 Like:

@interface NSDate (KDApi) NS_SWIFT_NAME(Date); 

私は試しても機能しませんでした。

答えて

1

これは、swift 3.0の動作を意図したものです。 Appleの開発者はそれを確認した。 NSDateとDateは違いがあり、NSDateからDate拡張までの(カテゴリ)はブリッジされません。しかし、NSStringとStringの場合はyesです。

関連する問題