gpt4 book ai didi

swift - 使用 (NSDate Predicate) 过滤 NSArray 直到过滤整个数组

转载 作者:行者123 更新时间:2023-11-30 10:06:22 26 4
gpt4 key购买 nike

我很难在标题中定义我的问题,所以如果我的标题不合适,请纠正我,好吧,所以事情是我有一个 NSArray命名results这是从 CoreData 获取的在这个数组中,项目有 date key 是 NSDate 类型。我想谓词 NSArray根据 Date 上的月份key ,并且我能够手动执行此操作,这就是我的做法:

 let predicated = NSPredicate(format: "date >= %@ AND date <= %@", start, End)
var filtered = results.filteredArrayUsingPredicate(predicated)

这里startendNSdate这是给定月份的第一个和最后一个日期,我的预测类似于“给我 1 月 1 日到 1 月 31 日之间的结果”,并且它工作正常

但我想断言我的整个result以某种方式存储数组,这样我就不必提供日期范围,就像一个采用 NSArray 的函数一样并给我带有月份变量的输出,例如

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"   ]

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

January = 3
feb = 3
march = 1
april = 3
may = 4
june = 2

最佳答案

@Joshua 向您展示的解决方案看起来非常优雅 - 假设您只对月份感兴趣 - 意味着 2016 年 3 月与 2015 年 3 月算作同一件事 - 然后当您将数据解析为 myArray,只需创建一个 myMonths 数组并去掉中间的数据元素即可得到月份。

它看起来像这样 -

let dateComponents = resultDate.componentsSeparatedByString(",")
myMonths.append(dateComponents[1])

如果您确实需要在计数中包含年份,则只需附加字符串即可获得“201603”“032016”

关于swift - 使用 (NSDate Predicate) 过滤 NSArray 直到过滤整个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com