NSクラスとNSクラス以外のクラスの違いは何ですか?特にNSDate
対Date
? NS
はコアの周りに何らかのタイプのラッパーを表しますか?NS
の機能はありませんか?スイフト3:日付とNSDate?
答えて
スウィフト3は、このようなNSDate
ためDate
、 NSData
といくつかのより多くのためのData
などの既存 財団クラスタイプ、のためにいくつかの新しいオーバーレイ値の型を導入しました。完全なリストと詳細が
理由のいくつか
- は、
let
とvar
の代わりに、可変および不変のバリエーションを適切な値のセマンティクスを提供し、中に見つけることができます、- "Swifty" API。
新しいオーバーレイタイプは、対応する財団のタイプがあり すべての機能を提供する必要がありますが、必要であれば、あなた は常に他の型にキャストすることができます。
Swiftにインポートされた既存のFoundation APIが の場合、これらのタイプは自動的にブリッジされます。 Date
とNSDate
に関して
:Date
は値型 で一定又は可変とすることができる:NSDate
一方
var date = Date()
date += 10.0 // Add 10 seconds
は、基準タイプと不変です。 NSDate
Sのみ.compare()
と比較することができる一方 もDate
Comparable
let date1 = Date()
let date2 = Date()
if date1 < date2 { }
あります。
備考:これらの「オーバーレイタイプ」について、値型(構造体) などDate
およびその基礎相手(クラス)などNSDate
は異なるタイプであり、両方がスイフトから使用することができます。 それはNS
プレフィックスは、単に、例えば、特定の財団 クラスのためにドロップされました
と混同してはいけませんスウィフト3.クラスはObjective-Cのクラスである
Martinに感謝します。 「標準的な」スウィフト開発を行う際にクラスを使用するためのガイドラインはありますか? –
@MarcusLeon:Swiftは、既存のFoundation APIをインポートする際に既に新しいオーバーレイタイプに橋渡ししているので、新しいタイプを使用することをお勧めします。この利点は、私がリンクしている提案(適切な価値セマンティクスなど)に列挙されています。 - いくつかのメソッドが利用できない場合は、Foundation型にキャストして古いメソッドを呼び出すことができます。例:http://stackoverflow.com/questions/39519144/nslocale-swift-3 –
NSDate
とDate
は同じものではありません。 NS(次のステップ)クラスはObjective-Cでのみ使用され、Objective-Cでは日付変数NSDateを表します。
特にSwift 3.0に関して、Swift Appleの最新リリースは、いずれのタイプにもNSプレフィックスを使用する必要性を完全に排除しました。 Swift 3では、NSDateの代わりにDateを使用します。コードをよりきれいに見せるために
いいえ、それは別のことです。 'Date'と' NSDate'は同じ型ではありませんが、https://github.com/apple/swift-evolution/blob/master/proposals/0086-drop-foundation-ns.mdには含まれていません。 - SwiftではNSDateとDateの両方が使用可能です。 –
すべてのNS型が非NS型アナログを持っているわけではありません。 – Rob
NSデータはSwift 3のいくつかの場所、たとえばCore Dataで必要です。私は日付を格納する属性を持っています。 Date()を代入しようとすると、「 'Date'型の値を代入することはできません」というエラーが表示されますが、NSDateに代入すれば問題ありません。 (); coreDataEntity。date = theDate as NSDate – Scooter
NSクラスと非NSクラスの違いは、NSクラスが参照型であり、非NSクラスが値型である点です。スイフト3では、AppleはNSDateのようなFoundationクラスを導入してDateに再命名しましたが、参照タイプではなく値タイプに基づいているため、Dateは値タイプです。 例:
let date = NSDate() //1
date.dateByAddingTimeInterval(1000) //2
2。日付は定数ですが、可変性は変数を変数にするのではなく、クラスに依存しますが、許容されます。
let date = Date() //3
date.dateByAddingTimeInterval(1000) //4
4.に対し
は許可されていない許可されていませんとなり「日付」は、日付が日付(あると)「せ」値のタイプであるタイプと定数ましょうとしてエラーになります。
マイナー解説:まず、これらの非 'NS'型のすべてが値の型(例えば、OperationとOperationQueue)であるとは限りません。しかし、はい、一般的にはそうですし、「日付」は確かです。第二に、「NS」以外の「クラス」を指すのは理にかなっていないことに留意することが大切です。その大半はクラスではないからです。それらのほとんどは 'struct'値型です。 – Rob
'date'は定数であるが' dateByAddingTimeInterval'は 'Date'に存在しないので、2番目の引数は失敗しません。これに相当するのは 'date + 1000'です。これは合法です。 –
ええ、4行目の 'Date'構文は' date.addingTimeInterval(1000) 'または' date + 1000'です... – Rob
スティーブ・ジョブスがアップルに呼び戻される前のNSは、より多くのサーフェス・リテラル・デザインの意味で、NextStepの日にすべてに与えられた接頭辞だったので、Objective- Cの構文。
スウィフトの発展に早送りに、彼らはそれがうまく(クリス・ラットナーのため)、接頭辞としてCLだったかもしれないが、明らかに私は、任意のプレフィックス
- 1. スイフト:日付の差
- 2. NSString日付からNSDate
- 3. NSDateの日付コンポーネントと別のNSDateの時間コンポーネント
- 4. JSONのNSDateに日付とバック
- 5. Swift 3でNSDateカテゴリを使用する日付型
- 6. NSDateからRFC 2822の日付形式
- 7. NSDateフォーマッタ変換が正しい日付
- 8. スイフト3:パラメータとしてCNLabeledValue
- 9. スイフト3:NSNotificationと通知
- 10. NSDateでの作業とObjective Cの日付と比較
- 11. スイフト3のAlmofire?
- 12. スイフトのネストジェネリックス3
- 13. スイフト3 - アトミックブール
- 14. スイフト3 NSMuttableArray
- 15. スイフト3 - UIScrollView
- 16. スイフト3 | CoreData |カスタムエンティティ
- 17. NSDateとその次の日
- 18. スイフト3:日付が変更されているかどうか調べます。
- 19. NSNumber&NSDate(swift 3)
- 20. NSDate Swift 3 - EVReflection
- 21. get nowTime as NSDate他の日付と比較するオブジェクト
- 22. NSDateからの日付と時間の抽出 - 目的C
- 23. スイフト3:クロップ画像
- 24. スイフトのInitメソッド3
- 25. スイフト3 - マルチビューコントローラのエラー
- 26. スイフト3:テーブルビューのグリッド
- 27. スイフト3:計算フィールドエラー
- 28. スイフト3 - UITextView総ラインカウンタ
- 29. 日付のNSDateフォーマットは有効な日付ではありません
- 30. 形式の日付文字列を変換する:「2017年1月3日16:50:00.0」NSDate
の不在を持っていることを選んだABD、明らかな相違点を必要とそれは同じだと思う、AppleはNSDateをSwift 3のDateに変更するが、わからない。 –