【发布时间】:2011-11-17 12:53:35
【问题描述】:
我正在编写一个应用程序来显示一些数据,这些数据会根据它所在的星期几而变化。该应用程序的上下文是用于即将举行的会议。我想显示那天的日历条目。存储在 coredata 中的事件详细信息。
我用来创建 NSPredicate 的是:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *today = [NSDate date];
NSString *sunday = @"2011-12-04";
NSString *monday = @"2011-12-05";
NSString *tuesday = @"2011-12-06";
NSString *wednesday = @"2011-12-07";
NSInteger dayNumber = 1;
if ([[df stringFromDate:today] isEqualToString:sunday]) {
dayNumber = 2;
} else if ([[df stringFromDate:today] isEqualToString:monday]) {
dayNumber = 3;
} else if ([[df stringFromDate:today] isEqualToString:tuesday]) {
dayNumber = 4;
} else if ([[df stringFromDate:today] isEqualToString:wednesday]) {
dayNumber = 5;
}
NSExpression *lhs = [NSExpression expressionForKeyPath:@"day_number"];
NSExpression *rhs = [NSExpression expressionForConstantValue:[NSNumber numberWithInt:dayNumber]];
NSPredicate *equalToPredicat = [NSComparisonPredicate predicateWithLeftExpression:lhs
rightExpression:rhs
modifier:NSDirectPredicateModifier
type:NSEqualToPredicateOperatorType
options:0];
// Edit the sort key as appropriate.
NSSortDescriptor *sortDescriptorTime = [[NSSortDescriptor alloc] initWithKey:@"start_time" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:/*sortDescriptorDayNumber,*/ sortDescriptorTime, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setPredicate:equalToPredicat];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext
sectionNameKeyPath:@"day_number"
cacheName:@"TodayCache"]
我看到的是,当日期更改时(即:周六到周日),数据(显示在 UITableView 中)没有得到更新。
谢谢, 马特。
【问题讨论】:
-
您的问题中的任何代码都没有触及表格视图。为什么你会期望 tableview 神奇地改变?
标签: ios core-data nspredicate