我有一张桌子,旁边有物品名称和日期。然后我有另一个表,我需要将所有具有特定日期的对象添加到表中。例如,我想从此表中取出日期为 03/08/13 的所有对象并将它们添加到另一个数组中。这是否可能我能想到的唯一方法是使用与搜索栏过滤器方法类似的方法。任何帮助将不胜感激。上表有两个单独的 NSMutableArrays 标签,所以我认为我需要两个过滤器数组。
问问题
182 次
2 回答
0
拥有两个单独的数组是最好的解决方案。如果你使用 Core Data,你可以简单地在 ; 上设置一个过滤谓词NSFetchedResultsController
。否则,您可以简单地将未过滤数组中的对象添加到过滤数组中。让我知道您将使用哪种方法,如果您对其中任何一种方法有任何疑问。
于 2013-08-04T20:37:26.660 回答
0
您不需要使用 2 个数组:每个标签 1 个。相反,您可以使用NSDictionary
对象并将数据分配给与单元格的不同元素相对应的键。之后,要进行日期过滤,您可以执行以下操作:
// Create current calendar
NSCalendar *calendar = [NSCalendar currentCalendar];
// Setup date components from date
NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]];
// Set date components
[dateComponents setHour:0];
[dateComponents setMinute:0];
[dateComponents setSecond:0];
NSDate *startOfDate = [calendar dateFromComponents:dateComponents];
[dateComponents setHour:23];
[dateComponents setMinute:59];
[dateComponents setSecond:59];
NSDate *endOfDate = [calendar dateFromComponents:dateComponents];
// Create predicate to filter your date
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(cellDate > %@) AND (cellDate < %@)",startOfDate, endOfDate];
NSArray *filteredArray = [[NSArray alloc] initWithArray:[tableData filteredArrayUsingPredicate:predicate]];
您应该确保将单元格日期存储为NSDate
每个NSDictionary
对象中的 's。此外,您需要使用上述所有设置的原因是,如果您只是使用@"cellDate == @filterDate"
谓词,由于时间因素,它将无法工作(除非您碰巧知道和/或明确指定了保存日期的确切时间)。
于 2013-08-07T14:54:53.367 回答