1

私は現在、ローカル通知に取り組んでいます。

- (void)viewDidAppear:(BOOL)animated {

NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:[NSDate date]];
[components setHour:uhrzeit];
_date_today = [calendar dateFromComponents:components];


if (akt_tag != proj_tag) {
    _date_final = [NSDate dateWithTimeInterval:(86400*(proj_tag - akt_tag)) sinceDate:_date_today];
    }
else {
    _date_final = [NSDate dateWithTimeInterval:0 sinceDate:_date_today];
    }



    NSLog(@"%@", _date_final);

}

- (IBAction)erinnerung:(id)sender {

UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = @"It's Notific Time!";
notification.soundName = @"benachrichtigung.mp3";
notification.timeZone = [NSTimeZone defaultTimeZone];
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:[_date_final timeIntervalSinceDate:[NSDate date]]];
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
[notification release];

}

しかし、私はこのエラーが発生しています(より正確には:notfication.fireDateで):

2013-03-23 12:50:21.303 Notific[4593:907] -[NSISRestrictedToNonNegativeMarkerVariableToBeMinimized timeIntervalSinceDate:]: 認識されないセレクターがインスタンス 0x1dd514b0 に送信されましたuncaught exception 'NSInvalidArgumentException', reason: '-[NSISRestrictedToNonNegativeMarkerVariableToBeMinimized timeIntervalSinceDate:]: unrecognized selector sent to instance 0x1dd514b0' * First throw call stack: (0x337723e7 0x3b463963 0x33775f31 0x3377464d 0x336cc208 0x56b33 0x3566c087 0x3566c03b 0x3566c015 0x3566b8cb 0x3566bdb9 0x355945f9 0x355818e1 0x355811ef 0x372985f7 0x37298227 0x337473e7 0x3374738b 0x3374620f 0x336b923d 0x336b90c9 0x3729733b 0x355d52b9 0x4ae5f 0x3b890b20) libc++abi.dylib: 例外をスローして呼び出された終了

ここで何が問題なのか教えてください。

4

2 に答える 2

0
UILocalNotification *notif = [[UILocalNotification alloc] init];

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComp = [[NSDateComponents alloc] init];

if (akt_tag != proj_tag) {
    // after One Day
    [dateComp setDay:1];
}

NSLog(@"Year: %i, Month: %i, Day: %i, Time:%i:%i\n",[dateComp year], [dateComp month],
      [dateComp day], [dateComp hour], [dateComp minute]);

NSDate *fireDate = [gregorian dateByAddingComponents:dateComp toDate:[NSDate date]  options:0];

notif.fireDate = fireDate;
notif.timeZone = [NSTimeZone defaultTimeZone];

notif.alertBody = @"Your NOtification Message";

[[UIApplication sharedApplication] scheduleLocalNotification:notif];
于 2013-03-23T17:55:54.990 に答える
0

保持していません_date_final。そのため、関数でアクセスしようとするとerinnerung、のオブジェクト_date_finalが無効になります。

次の方法でコードを変更します。

if (akt_tag != proj_tag) {
    _date_final = [NSDate dateWithTimeInterval:(86400*(proj_tag - akt_tag)) sinceDate:_date_today];
    }
else {
    _date_final = [NSDate dateWithTimeInterval:0 sinceDate:_date_today];
    }

[_date_final retain];
于 2013-03-23T12:21:28.947 に答える