iphone - 从 NSArray 获取特定范围

标签 iphone objective-c ios nsarray date-range

所以,我认为这并不容易......这里是:我有两个 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/

相关文章:

ios - 等到一个 block 到达它的完成 block

iphone - 在尝试添加 subview iphone SDK 的 switch 语句中混合 Objective C 和 C

iphone - 滑动手势和导航 Controller

ios - 部分标题的 UICollectionReusableView 不起作用

objective-c - 如何以编程方式向 UIPickerView 添加声音

ios - iPad 上的 ActionSheet 崩溃(相机按钮)

iPhone SDK : Block Animation Ignore Error with Curved Path

iphone - Xcode编译错误: Can't find an (old) file I used to have

ios - 如何计算 iOS 中的键盘高度?

ios - 注销后如何重新加载 Root View Controller ?