使用(NSDate Predicate)过滤NSArray,直到整个数组被过滤

时间:2016-03-02 19:47:30

标签: swift nspredicate

我很难在标题中定义我的问题,所以如果我的标题不合适那么请纠正我,所以我有一个 名为NSArray的{​​{1}}是从results获取的,在此数组中,项目具有CoreData密钥,该密钥属于NSDate类型。我想根据date键上的月份来预测NSArray,并且能够手动执行此操作,这就是我这样做的方式:

Date

此处 let predicated = NSPredicate(format: "date >= %@ AND date <= %@", start, End) var filtered = results.filteredArrayUsingPredicate(predicated) startend,它们是给定月份的第一个和最后一个日期,表示我预测的类似于&#34;给我的结果介于1月1日到1月之间31 jan&#34;并且工作正常

但是我希望以某种方式预测我的整个NSdate数组,以便我不必提供日期范围,就像一个将result带给我的函数输出变量为月份,如

NSArray

请告诉我使用这种方法尝试做什么甚至是可能的,如果是的话,请给我一些暗示或指示如何做到这一点它会对我有帮助< / p>

为了更好地理解,请参阅示例:

func  filterResultArray(NSArray) -> name of months with results {

// here predicate the whole array and add them to the founded months variable 

}


print( "\(filterResultArray(resultsArray) )") // should print  :
jan = 5 , feb = 18 , march = 5 , may = 87

现在我如何过滤这个数组,以便我得到类似的结果:

example - myArray = [ "1,01,2016", "4,01,2016" ,"28,01,2016", "6,02,2016" "25,02,2016", "29,02,2016"  "4,03,2016", "4,04,2016"  "10,04,2016", "24,04,2016"  "9,05,2016", "29,05,2016"  "17,05,2016", "24,05,2016"  "12,06,2016", "13,06,2016"   ]

1 个答案:

答案 0 :(得分:1)

@Joshua给你的解决方案看起来非常优雅 - 假设你只对月份感兴趣 - 意思是2016年3月与2015年3月相同 - 然后当你将数据解析为{{1只需创建一个myArray数组并删除中间数据元素即可获得月份。

它会看起来像这样 -

myMonths

如果您执行需要在计数中包含年份,那么只需附加字符串即可获得let dateComponents = resultDate.componentsSeparatedByString(",") myMonths.append(dateComponents[1]) "201603"