【问题标题】:NSCalendar [_NSCopyOnWriteCalendarWrapper component:fromDate:]: errorNSCalendar [_NSCopyOnWriteCalendarWrapper 组件:fromDate:]:错误
【发布时间】:2014-11-06 16:41:18
【问题描述】:

在 tableviewcontroller 中,我有这段代码来获取从 0 到 6 的天数数组,其中它首先以当前 dayNumber 排序。

self.dayOrder=[NSMutableArray new];

NSCalendar *cal=[NSCalendar currentCalendar];

NSInteger dayNumber = [cal component:NSCalendarUnitWeekday fromDate:[NSDate date]]-1; // Sunday gives 0,

for (int i=0;i<7;i++) {
    [self.dayOrder addObject:[NSNumber numberWithInteger:dayNumber]];
    dayNumber=(dayNumber+1)%7;
}

当我移动到这个视图控制器时,我收到了这个错误*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_NSCopyOnWriteCalendarWrapper component:fromDate:]: unrecognized selector sent to instance 0x15e4b850'

当我添加一个 ALL Exceptions 断点时,错误发生在这一行

 NSInteger dayNumber = [cal component:NSCalendarUnitWeekday fromDate:[NSDate date]]-1; // Sunday gives 0,

它似乎在我的 iPhone 6 上运行,但它在 iOS 8 上运行,而不是在 iOS7 上运行的 iPone 4,5c。

不知道为什么会发生这种情况,非常感谢任何帮助。

谢谢你的帮助!!!

【问题讨论】:

    标签: ios objective-c nscalendar cal


    【解决方案1】:

    component:fromDate: 方法已添加到 iOS 8.0 中的NSCalendar

    如果您需要支持较旧的 iOS 版本,请使用较旧的 components:fromDate: 方法并从生成的 NSDateComponents 中提取您需要的值。

    NSDateComponents *components = [cal components:NSCalendarUnitWeekday fromDate:[NSDate date]];
    NSInteger weekday = [components weekday] - 1;
    

    【讨论】:

    • 好的,所以我有这个 ` NSDateComponents *day = [cal components:NSCalendarUnitWeekday fromDate:[NSDate date]]; ` 然后我怎么把它变成整数
    猜你喜欢
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多