-1

こんにちは私は特定の日に何かをしようとしています。現時点ではランダムなものをログに記録していますが、ログはアプリの起動時に直接表示され、設定した日付には表示されません。これが私のコードです。

-(void)theMagicDate{

    NSCalendar *nextCal = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *nextComp = [nextCal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:[NSDate date]];

    [nextComp setYear:2013];
    [nextComp setMonth:3];
    [nextComp setDay:26];
    [nextComp setHour:10];
    [nextComp setMinute:05];

    UIDatePicker *nextDay = [[UIDatePicker alloc]init];
    [nextDay setDate:[nextCal dateFromComponents:nextComp]];

    if(nextDay.date){
        NSLog(@"Doing the stuff on the date");
    }
}

そして私はviewDidLoadからこの関数を呼び出します

4

2 に答える 2

3

さて、あなたはいくつかの間違った仮定をしています:

最初if(nextDay.date){は常に真実です。物件の日付に割り当てられているものがあるかどうかだけをチェックするので。そのプロパティに日付を割り当てたので、それは本当です。

次に、UIDatePickerはユーザーが日付を選択できるようにするユーザーインターフェイス(UI)コンポーネントです。コンポーネントを使用して作成した日付が貼り付けられているか、現在または将来であるかを確認する場合は、のメソッドを使用する必要がありますNSDate

そのようです:

-(void)theMagicDate{

NSCalendar *nextCal = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *nextComp = [nextCal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:[NSDate date]];

[nextComp setYear:2013];
[nextComp setMonth:3];
[nextComp setDay:26];
[nextComp setHour:10];
[nextComp setMinute:05];

NSDate *dateToCheck = [nextCal dateFromComponents:nextComp];
NSDate *now = [NSDate date];


switch ([now compare:dateToCheck]) {
    case NSOrderedAscending:
        NSLog(@"Date in the future");
        break;

    case NSOrderedDescending:
        NSLog(@"Date in the past");
        break;

    case NSOrderedSame:
        NSLog(@"Date is now");
        break;
}


}
于 2013-03-26T09:08:22.530 に答える
0
if(nextDay.date){
    NSLog(@"Doing the stuff on the date");
}

常に真実です。

現在の日付を、ピッカーまたは任意の場所から選択した日付と比較する必要があります。将来の日付をuserdefaultsやplistなどに保存する必要があります。MagicDateメソッドでそれを読み取り、2つの日付を比較してから、に移動します。NSLog(@"Doing the stuff on the date");

-(void)theMagicDate{

    NSCalendar *nextCal = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *nextComp = [nextCal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit fromDate:[NSDate date]];

    [nextComp setYear:2013];
    [nextComp setMonth:3];
    [nextComp setDay:26];
    [nextComp setHour:10];
    [nextComp setMinute:05];

    UIDatePicker *nextDay = [[UIDatePicker alloc]init];
    [nextDay setDate:[nextCal dateFromComponents:nextComp]];


     //read from plist etc
     NSDate *readDate=...


    if( [readDate compare:nextDay.date]==NSOrderedSame){
        NSLog(@"Doing the stuff on the date");
    }
}
于 2013-03-26T09:08:09.663 に答える