2016-04-25 6 views
0

プロパティの日付がNSDate型のオブジェクトの配列があります。配列には、将来の日と過去の日が含まれます。今日の日付の配列から要素を取得する

私はその配列から、今日の日付だけを含み、最後の24時間は含まない配列の配列を取得したいと思います。

私は(旧への新しい)降順で要素を命じ:

allDashboards.sortInPlace({ $0.date!.compare($1.date!) == NSComparisonResult.OrderedDescending 

私は、ループのために行う日付が昨日であるかどうかを確認し、そこ配列をカットしようとしたが、それはそれとして動作しません。昨日の日付でどの要素もないことがあります。

for dash in allDashboards { 

     if (NSCalendar.currentCalendar().isDateInYesterday(dash.date!)) { 
      print(i) 
      allDashboards.removeRange(Range.init(start: 0, end: i)) 
      break 
     } 

     i += 1 
    } 

は日がその日の一部である場合、日付が代わりの日を過ぎているかどうかを確認する方法はありますか?

答えて

1

ワンライナー:

let todayDashboards = allDashboards.filter { NSCalendar.currentCalendar().isDateInToday($0.date!) } 
0

NSDateComponentsを使用して、許容範囲の開始と終了を表す日付を作成できます。これらはあなたが望むものであれば何でも構いません

これらの日付を取得したら、>の開始日と終了日の<に一致するNSPredicateを作成できます。これにより、フィルタリングされた配列が生成されます。

isDateInTodayを使用してコンテンツをフィルタすることもできます。

あなたがしてはいけないことは、配列を反復して同時に変更することです。これは、現在のコードがallDashboards.removeRangeのループ内で行うループです。forループ内です。

0

あなたがfilter機能で、今日であり、NSCalendar

let filteredDashboards = allDashboards.filter{ NSCalendar.currentCalendar().isDateInToday($0.date!) } 
isDateInTodayすべての日付をフィルタリングすることができます