2016-10-19 6 views
1

私はNSManagedObjectオブジェクトを持っている:私はこれらの二つの間の時間間隔を必要とするので、私が実装2つの `NSDate`オブジェクトを持つ` timeIntervalSince() `に` as Date 'が必要ですか?

@NSManaged public var timestamp: NSDate 

let interval = next.timestamp.timeIntervalSince(current.timestamp) 

はなぜ次のエラーで、この結果のでしょうか?

'NSDate' is not implicitly convertible to 'Date'; did you mean to use 
'as' to explicitly convert? 

nextcurrent両方がタイプNSDateのものであり、timeIntervalSince()NSDate方法ですので、私は驚いています。これは、簡単にエラーに提案を以下で固定だが、私はここで起こっかを理解したいと思い

let interval = next.timestamp.timeIntervalSince(current.timestamp as Date) 

場合、それは重要、これはスウィフト3.0です。

答えて

1

NSDate Apple Documentationを参照:

FoundationフレームワークにスウィフトオーバーレイはNSDateクラスに橋渡し日 構造を提供します。日付値タイプ はNSDate参照タイプと同じ機能を提供し、 2つは Objective-C APIと相互作用するSwiftコードで互換的に使用できます。この動作は、Swiftが の標準文字列、数値、およびコレクションタイプを対応する Foundationクラスに橋渡しする方法と似ています。あなたはtimeIntervalSinceメソッドのシグネチャをチェックすると

、それはfunc timeIntervalSince(_ anotherDate: Date) -> TimeIntervalで、anotherDate日付タイプは(もはやないNSDateDateであることに注意してください。新しい値タイプの詳細については

、可変性と基礎値タイプの this proposalをチェックするなど、新しい値型の束があります:NSDataの、NSMutableDataは - > データ、NSIndexPath - > IndexPath、NSNotification - > 通知 ...

関連する問題