NSCalendar - 在全球范围内设置自己的 firstWeekday

NSCalendar - set own firstWeekday globally

是否可以设置自定义 firstWeekday? 我应该继承 NSCalendar 吗?

现在我必须在每个需要使用 NSCalendar 的地方都这样设置

NSCalendar* calendar = [NSCalendar currentCalendar];
calendar.firstWeekday = [NSUserDefaultsHelper firstDayOfWeek];

您可以使用惰性实例化变量编写 NSCalendar 类别:

@interface NSCalendar (WeekdayCalendar)

+ (NSCalendar *)customWeekdayCalendar;

@end

@implementation NSCalendar (WeekdayCalendar)

+ (NSCalendar *)customWeekdayCalendar
{
    static NSCalendar *customCalendar = nil;
    if (customCalendar == nil) {
        customCalendar = [self currentCalendar];
        customCalendar.firstWeekday = [NSUserDefaultsHelper firstDayOfWeek];
    }
    return customCalendar;
}

@end

然后你就可以随时随地使用日历了

NSCalendar *myCalendar = [NSCalendar customWeekdayCalendar];