繁体   English   中英

从NSArray获取特定范围

[英]Get specific range from NSArray

因此,我认为这并不容易...这是这样:我有两个NSArrays,每个NSArrays包含一些自定义对象(符合KVC的规范..也许这会有所帮助)。 这些对象在第一个数组中具有两个属性(我们称其为array1),该对象是NSNumbers,在第二个数组中,一个对象是NSNumber,另一个是NSDate ...这是两部分的问题:

1)如何从数组1中获取一个NSArray,其中所有对象具有特定范围内的NSNumbers之一

可以说该数组为[(1,1),(2,4),(2,12),(3,14)],我需要一个第二个值在3到13之间的数组(仅对象2和3在这种情况下)..是的,数组在第二个变量上排序...

2)在第二个数组中,我需要具有某个时间间隔中的日期的对象,但是我需要以较小的间隔来细分该间隔,并且返回的数组将具有此新对象,这些新对象具有第一个间隔中的数字对象的总和....一个例子是为了在我不清楚的情况下....

初始数组是[[2月1月12日,(5月1月13日),(20月3月15日),(10月3月20日),(26月4月28日),(20月5月6日),(30, 7月4日)]; 我需要间隔2月1日-5月30日,分成几个月,结果应该是[(0,2月),(30,march(从初始数组开始的20 + 10)),(26,april),(30,may )];

此初始日期-日期数组将不会更改...,子间隔拆分时间范围将始终为:从间隔开始到最后一个间隔结束...(从一月的第一天(午夜)到3月的最后一天,或者从下午1:00的第一秒到3:59:59.999 PM)

如果解决方案有效,那就太好了,因为这些数组可能有多达10,000个对象...而且此getRangeWithInterval函数可能每秒调用一次以上(并且应该在iPhone 3GS上运行...我希望我不会要求太多)。 :)

第一个问题可以通过使用NSPredicate解决。
假设,如果对象中的第二个NSNumber属性称为secondNumber

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"secondNumber >= 3 && secondNumber <= 13"];
NSArray *filteredArray = [array1 filteredArrayUsingPredicate:predicate];

希望它可以编译-我没有XCode编写它。

第二个问题听起来有点困难。
让我想想...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM