2011-09-16 6 views
2

특정 날짜에 지역 알림을 발생시키는 방법을 알아 내려고하고 있습니다.NSCalendar 장치 이해 (내가 5 살이라고 설명해주십시오.)

나는 캘린더 유닛을 사용해야한다. 그러나 내가 그들에 대해 발견 한 설명은 악취가 난다. 너희들이 나에게 설명해 주시겠습니까? 제가 5 살인 것처럼, 그들이 어떤 간격을 나타 냅니까?

나는 내가 알고 있다고 생각하는 것들을 채웠다. 내가 잘못하면 다른 사람들을 채우 라. 월요일부터 매일 화재

  • :

    UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease]; 
    if (alarm) 
    { 
        alarm.fireDate = aDate; 
        alarm.timeZone = [NSTimeZone systemTimeZone]; 
        alarm.repeatInterval = WHAT DO I PUT HERE? TO MAKE IT REPEAT JUST SATURDAYS AND SUNDAYS?; 
        alarm.soundName = @"alarm.caf"; 
        alarm.alertBody = @"hi there"; 
        [app scheduleLocalNotification:alarm]; 
    } 
    

    나는 이러한 가능성 중 하나에 로컬 알림을 프로그램 할 필요가 :

    NSEraCalendarUnit = ????? era? 
    NSYearCalendarUnit = event will repeat once in a year at the same month, day and hour 
    NSMonthCalendarUnit = event will repeat once a month at the same day and hour 
    NSDayCalendarUnit = event will repeat every day at the same hour 
    NSHourCalendarUnit = event will repeat every hour at the same minute 
    NSMinuteCalendarUnit = event will repeat every minute at the same second 
    NSSecondCalendarUnit = event will repeat every second 
    NSWeekCalendarUnit = event will repeat the same day of week every week 
    NSWeekdayCalendarUnit = ?????? can I make it repeat just specific days? I mean, monday to friday but not saturday and sunday? 
    NSWeekdayOrdinalCalendarUnit = ????? how do I use that? 
    NSQuarterCalendarUnit = when exactly will it repeat? every 3 months? 
    NSCalendarCalendarUnit = ????????? 
    NSTimeZoneCalendarUnit = ???????? 
    

    내가해야 할 일의 예입니다 토요일과 일요일을 제외한 금요일까지
  • 토요일과 일요일마다 그리고 다른 날에는 발사되지 않습니다.
  • 은 매주 같은 요일에 반복됩니다.

이 작업을 수행하려면 repeatInterval에 어떤 값을 사용해야합니까?

감사합니다.

답변

2

나는 당신이 원하는 것을 믿을 수 없다. This question 자세한 내용을 알려주십시오.

물론 두 가지 별도의 지역 알림을 만들 수 있습니다. 둘 다 매주 반복되며, 토요일에 시작하는 알림과 일요일에 시작되는 알림 중 하나입니다.

+0

좋은 생각, 고마워. 내 질문에 물음표가있는 항목을 어떻게 설명 할 수 있습니까? 도대체 NSWeekdayCalendarUnit이 무엇입니까? NSCalendarCalendarUnit은 어떻습니까? 애플은이 사람들을 비열한 문서를 작성해야만합니다. 그들의 문서는 제품의 품질, 품질의 반대입니다. – SpaceDog

-1

내가 믿는 잘못된 방식입니다.

내가 5 살짜리 (내가 obj/c를 5로 이해할 수 있다면 그를 빨리 고용 할 것입니다.)라고 말합니다.

수행하고자하는 작업은 무엇입니까? 특정 요일에 알람을 시작하거나 특정 작업을 실행하고 싶습니까?

그는 아마도 "나는 모른다"라고 말할 것입니다.하지만 여기에서는 실제로 토요일과 일요일에 특정 작업을 실행하려고합니다.

이렇게하려면 실제로 매일 또는 매시간 또는 매분마다 실행되는 타이머가 필요합니다. 타이머는 실제로 중요하지 않습니다. 타이머는 동작이 실행되는지 여부를 확인하는 동작 만 트리거합니다 나오다.

NSTimer* aTimer = [[NSTimer alloc] initWithFireDate:[NSDate date] 
                interval:3600*24 // every 24 hours for example 
                target:self 
                selector:@selector(onTimerTriggered:) 
                userInfo:nil 
                repeats:YES]; 

이제 실제로 어떤 요일인지 확인해야합니다. 가장 중요한 것은 이것이 별도로 수행된다는 것입니다.

- (void)onTimerTriggered:(id)sender 
{ 
    // Create your calendar (gregorian is what you need) 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 

    // Create your components specified to only keep track of the week day of today 
    NSDateComponents *weekdayComponents = [gregorian components:NSWeekdayCalendarUnit fromDate:[NSDate date]]; 

    // now you know which day we are !! (careful in the US, sunday is first day of the week) 
    int weekday = [weekdayComponents weekday]; 

    // trigger alarm if needed 
    if (weekday == 3 || weekday == 5) // wednesday or saturday 
    { ... } // trigger your alarm instantly or wait until a specific hour it's up to you 
} 

요약하면 문제를보다 구체적인 조치로 분해하십시오. 다른 요일에 특정 작업을 만드는 작업을 원하십니까? 이

  • 작업입니다 무슨 요일

    1. 확인!

    NS--CalendarUnit

  • 는 애플이 NSDateComponents를 부르는에 특정 날짜를 분해하는 데 사용하지만,이 확실히 날짜 분해 다루는 애플 방법이며 다른 언어 강에 기록되지 않습니다.

    +0

    감사하지만이 문제는 큰 간격으로 타이머를 사용하여 경보를 발사하는 것은 불가능합니다. 타이머는 앱이 실행 중일 때만 작동합니다. 문제는 이것입니다. 잠시 후 앱이 종료됩니다. 그런 다음 앱이 종료되기 전에 UILocalNotifications로 iOS를 프로그래밍해야합니다. 앱이 계속 실행되는 동안 이벤트가 나중에 실행될 수 있다는 것을 알 수있는 유일한 방법입니다. 내가 그렇게하지 않으면, 사건들이 해고되지 않을 것이다. 반복 할 UILocalNotifications에 필요한 주기성은 마지막 질문에서 언급 한 thos입니다. 내가보기에는 당신의 답을 어떻게 활용할 수 있을까요? 어쨌든 고마워. – SpaceDog

    +0

    사실 내 사과, 나는 당신의 문제를 오해. 지금 올바른 해결책은 내 지식을 넘어선 다. – apouche

    +0

    문제 없습니다. 어쨌든 고마워. – SpaceDog

    0

    Q : 단 5 개 UILocalNotification 인스턴스를 얻고 firedate의 년, 달, 날이 너무 오래 무료 (월요일부터 금요일까지 thire firedate을 설정 토요일과 일요일

    을 제외하고 월요일부터 금요일까지 매일 발사 요일이 원하는대로). 그런 다음 반복 간격 NSWeekdayCalendarUnit.URL을 UIApplication으로 설정하십시오.

    (ps : 다른 질문을 해결할 수있는 동일한 방법을 사용하십시오) 그것이 효과가 있기를 바랍니다!