是否可以在 Core Data 中使用 Date 属性上的星期几来使用谓词?
例如,在 SQL 中有 DAYOFWEEK() 函数。
我要做的是获取按星期几分组的平均分数,其中每个对象都有一个分数属性和一个日期属性。
我已经了解了分组部分,我只是找不到关于星期几部分的任何信息。
是否可以在 Core Data 中使用 Date 属性上的星期几来使用谓词?
例如,在 SQL 中有 DAYOFWEEK() 函数。
我要做的是获取按星期几分组的平均分数,其中每个对象都有一个分数属性和一个日期属性。
我已经了解了分组部分,我只是找不到关于星期几部分的任何信息。
您需要向核心数据实体添加一个瞬态属性。然后在实体 (NSManagedObject) 的实现文件中编写自定义代码。
在头文件中:
@property (readonly) NSString *weekDayText;
@property (readonly) NSInteger *weekDay; // use the number for sorting
在实现文件中:
- (NSInteger)weekDay {
// get the date from attribute
// you declared in the header file also
NSDate *event = self.scoreDate;
// do some kind of test to make sure it's not null
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =[gregorian components:NSWeekdayCalendarUnit fromDate:event];
NSInteger day = [weekdayComponents weekday];
// weekday 1 = Sunday for Gregorian calendar
[gregorian release];
return day;
}
- (NSString *)weekDayText {
NSInteger day = self.weekDay;
// now you would use some kind of locale to return the proper string
// for each language
NSString *text = .... // need to implement
return text;
}