2

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;
}

このView Controllerに移動すると、このエラーが発生します*** 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では動作していません.

なぜこれが起こっているのかわかりませんが、なぜそうなのかについての助けをいただければ幸いです。

助けてくれてありがとう!!!

4

1 に答える 1

16

このcomponent:fromDate:メソッドはNSCalendariOS 8.0 で追加されました。

古いバージョンの iOS をサポートする必要がある場合は、古いcomponents:fromDate:メソッドを使用して、結果の から必要な値を抽出しますNSDateComponents

NSDateComponents *components = [cal components:NSCalendarUnitWeekday fromDate:[NSDate date]];
NSInteger weekday = [components weekday] - 1;
于 2014-11-06T16:48:00.907 に答える