0

是否可以在 Core Data 中使用 Date 属性上的星期几来使用谓词?

例如,在 SQL 中有 DAYOFWEEK() 函数。

我要做的是获取按星期几分组的平均分数,其中每个对象都有一个分数属性和一个日期属性。

我已经了解了分组部分,我只是找不到关于星期几部分的任何信息。

4

1 回答 1

0

您需要向核心数据实体添加一个瞬态属性。然后在实体 (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;
}
于 2012-06-21T03:00:00.633 回答