2017-04-03 23 views
0

モデルの日付タイプを使用してコアデータの日付を正常に保存しています。 2017-04-02 14:56:41のような形式で保存された日付。私が検索するとき、私は2017年4月2日のような形式を持つ現在の日付のテキストフィールドで日付をフィルタリングしたいと思います。私は両方の日付を比較するために述語を使用していますが、アプリケーションが違いによってクラッシュしたり、現在の日付が文字列である可能性があります。コア日付日付ピッカーテキストフィールドとの比較

let predicate = NSPredicate(format: "(dateSchedule >= %@)", fromTextField.text!) 

コアデータ日:2017年4月2日14時56分41秒 CURRENTDATEテキストフィールドの日付:2017年4月2日

任意のヘルプ?

答えて

0

dateスケジュールです。日付がcoredataです。

let predicate = NSPredicate(format: "(dateSchedule >= %@)", dateObj) 

EDIT:

時間があれば

あなたは日付変数にテキストに変換することができます

let dateString = "2017-04-02 14:56:41" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss" 

let dateObj = dateFormatter.date(from: dateString) 

は、その後、あなたが述語を作成(フォーマットが正しいことを確認してください)あなたはこのようなユーティリティを使うことができます:

https://github.com/erica/SwiftDates

だから、あなたがしてフィルタリングすることができます:私は日付をこのようにフォーマットされているだろうあなたが一日

+0

私は日付刺さの変換についてのあなたのアイデアを得ました今日のフォーマットには問題がありますが、日付をcoredataに保存するとdatetimeが入ります。その日時は、データを取得するときと、その時間差の違いによって、述語が実際には機能していないときとは異なります。 – Imran

+0

@Imran、私は私の答えを更新しました。試してください。 – carlos21

+0

助けを借りて@ carlos21に感謝します。 – Imran

0

の初めまでに時間部分やフィルタリングを削除しているそのようにして

let predicate = NSPredicate(format: "(dateSchedule >= %@)", dateObj.startOfDay) 

let dateFormatter = Dateformatter() 
dateFormatter.timeStyle = .none 
dateFormatter.dateStyle = .medium 

これを日付に適用して、次のような文字列として取得できます。

次に、「2017年3月17日」のような日付が表示されます。

このように日付フォーマッタを使用するこの方法は、非常に現実的です。

あなたはちょうどそれを同じ方法で行うフェッチされています

let predicate = NSPredicate(format: "(dateSchedule >= %@)", fromTextField.text!) 

を私が代わりにUIDatePickerViewを使用するためにあなたを助言する:

let predicate = NSPredicate(format: "(dateSchedule >= %@), dateFormatter.string(from: datePickerView.date)")