所以,我认为这并不容易......这里是:我有两个 NSArray ,每个都包含一些自定义对象(符合 KVC ..也许这会有所帮助)。这些对象在第一个数组(我们称之为 array1)中有两个属性,该对象是 NSNumbers,在第二个数组中,一个对象是 NSNumber,另一个是 NSDate...这是由两部分组成的问题:
1) 如何从数组 1 中获取 NSArray,其中包含具有特定范围内的 NSNumber 之一的所有对象
假设数组是 [(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日), (7月4日30日)]; 我需要间隔 2 月 1 日 - 5 月 30 日,分成几个月,结果应该是 [(0,二月),(30,三月(来自初始数组的20+10)),(26,四月),(30,五月)];
这个初始日期数字数组不会改变...并且子间隔分割时间范围将始终是:从间隔开始到最后一个间隔结束...(从第一天(午夜)一月到三月的最后一天,或从下午 1:00 的第一秒到下午 3:59:59.999)
如果解决方案有效,那就太好了,因为这些数组可能最多有 10,000 个对象...并且这个 getRangeWithInterval 函数可能每秒调用一次以上(并且应该在 iPhone 3GS 上运行...我希望我的要求并不高)。 :)
最佳答案
第一个问题可以通过使用 NSPredicate 来解决。
假设,如果对象中的第二个 NSNumber 属性名为 secondNumber
:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"secondNumber >= 3 && secondNumber <= 13"];
NSArray *filteredArray = [array1 filteredArrayUsingPredicate:predicate];
希望它能编译 - 我在没有 XCode 的情况下编写了它。
第二个问题听起来有点难。
让我考虑一下...
关于iphone - 从 NSArray 获取特定范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443979/