2016-03-20 29 views
1

私はioS devをかなり新しくしているので、これは明らかかもしれません。スウィフトコアデータ特定の日付からの結果を取得する

コアデータでは、「dateAdded」という属性を持つエンティティ:「Post」があります。

ユーザがカレンダーでNSDateを選択したときに、その日だけすべてのエントリを取り出してテーブルにロードしたいとします。

私は、dateAdded(NSDate)がcalendarSelectedNSDateに等しい述語を使用することを考えていました。しかし、異なる時代のためにNSDatesが違うので、それがうまくいくとは思わない。

私は本当に解決に感謝します!ありがとうございました!

+0

あなたは正しい方向に考えています。日付の形式を同じに保つ必要があります。だからあなたは、あなたがフォーマットを知っているだろうか、それに応じてフォーマットを変更してcoreDataに日付を格納している。ユーザーが日付を選択すると、まず日付を必要な形式に変換し、述部を使用します。 –

答えて

2

使用NSCalendar選択した日付の開始と終了を計算し、述語を作成するために:

// get the current calendar 
let calendar = NSCalendar.currentCalendar() 
// get the start of the day of the selected date 
let startDate = calendar.startOfDayForDate(calendarSelectedNSDate) 
// get the start of the day after the selected date 
let endDate = calendar.dateByAddingUnit(.Day, value: 1, toDate: startDate, options: NSCalendarOptions())! 
// create a predicate to filter between start date and end date 
let predicate = NSPredicate(format: "dateAdded >= %@ AND dateAdded < %@", startDate, endDate) 
関連する問題