2016-04-25 98 views
0

我有一个属性是NSDate类型日期的对象数组。该阵列包括未来的日子和过去的日子。从数组中获取当天日期的元素

我想从该数组中获取一个元素数组,该数组只包含今天的日期,而不是最近24小时的日期。

我的降序(从新到旧)下令元素:

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

我试图for循环做了,检查日期是昨天和削减数组存在,但它并没有因为它的工作可能是用昨天的日期没有元素:

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来过滤内容。

你不能做的是迭代数组,并同时对它进行变异,这就是你当前的代码在for循环中用allDashboards.removeRange做的事情。

0

可以过滤这是今天与filter功能和NSCalendar

let filteredDashboards = allDashboards.filter{ NSCalendar.currentCalendar().isDateInToday($0.date!) } 
isDateInToday所有日期