2012-01-18 2 views
0

사용자가 UITextField에 데이터를 입력 할 수있는 앱을 작성했으며 그 중 하나를 사용하여 특정 날짜에 입력 할 수 있습니다. 앱이 전혀 실행되지 않아도 15 시간이 지나면 iPhone 알림 센터에 알림을 표시하려고합니다.iPhone : 알림 센터 문제

편집 : [-dateByAddingTimeInterval:]를 호출하기 위해 새로운 코드 -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UILocalNotification *localNotif = [[UILocalNotification alloc] init];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MMdd"]; 
NSDate *eventDate=[dateFormatter dateFromString:eventDateField.text]; 

localNotif.fireDate = [eventDate dateByAddingTimeInterval:-15*60*60]; 
localNotif.timeZone = [NSTimeZone defaultTimeZone]; 


localNotif.alertBody = @"Event Tomorrow!"; 

localNotif.alertAction = @"Show me"; 

localNotif.soundName = UILocalNotificationDefaultSoundName; 
localNotif.applicationIconBadgeNumber = 0; 
[[UIApplication sharedApplication]presentLocalNotificationNow:localNotif]; 

}

+1

약간 가혹한 점에 대해 사과드립니다.하지만 매우 기본적인 (중요한) 기본 사항이 부족합니다. 너 자신을 호의하고 배우십시오; 그것은 오래 걸리지 않을 것이고 결국 많은 시간과 좌절을 구할 것입니다. 내가 추천 할 수있는 아주 좋은 책은 [iOS 프로그래밍 : The Big Nerd Ranch Guide] (http://www.amazon.com/iOS-Programming-Ranch-Guide-Guides/dp/0321773772/)입니다. 멋지게 작성되었으며, 기초를 다루고 (특히 * 당신이 묻고있는 것들) 멋진 예제를 담고 있습니다. 호의를 베풀고, 읽고, 연습을하십시오. 오래 걸리지는 않겠지 만 대단히 도움이 될 것입니다. – fzwo

+0

감사합니다. fzwo, 예, 확실히 여기저기서 약간 뛰어 올랐습니다. 오늘 그 책을 살펴볼 것입니다. 고마워요! – John

답변

1

텍스트 필드에서 얻은 날짜를 NSDate 개체 eventDate에 저장하십시오. 날짜도 함께 설정하는 것이 좋습니다. 그 오류가 발생하는 이유는 dateByAddingTimeInterval:이 NSDate 객체에서 호출되어야하며 그 자체로 식별자가 아니기 때문입니다. 15시간 경우 이전의 날짜를 반환합니다

localNotif.fireDate=[eventDate dateByAddingTimeInterval:-15*60*60]; 

이 같은 지역 알림의 fireDate을 설정합니다.

편집 : NSDateFormatter 개체를 만들고 형식을 meetingDateField에 저장하는 방법으로 설정해야합니다. 그런 다음 dateFromString:을 사용하여 텍스트 입력란에서 NSDate을 가져옵니다.

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"mm'/'dd'/'yyyy"]; 
NSDate *eventDate=[dateFormatter dateFromString:meetingDateField.text]; 
+0

대단히 고마워요. 하지만 텍스트 필드에서 날짜를 잡아 NSDate 개체에 몇 가지 문제가 있습니다. 나는 이것을 다음과 같이 설정했다 :'NSDate * eventDate = [NSDate meetingDateField]; localNotiffireDate = [eventDate dateByAddingTimeInterval : -480 * 60];'(meetingDate는 날짜에 입력하는 텍스트 필드입니다.) – John

+1

@ Joey502 편집 된 답변을 시도해보십시오. 또한 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html을 살펴보십시오. – MadhavanRP

+0

감사합니다. 위의 새 코드를 사용해 주셔서 감사합니다. 오류 발생 "선택자에 대한 알려진 클래스 메서드가 없습니다."meetingDateField " – John

1

, 당신은있는 NSDate 객체가 있어야합니다. 위의 코드에서는 그렇지 않습니다. 모양은 다음과 같아야합니다.

NSDate* now = [NSDate date]; 
localNotif.fireDate = [now dateByAddingTimeInterval:20*60]; 
3

누구에게 메시지를 보내려고합니까? 아무도. 메시지 수신자, 메서드를 실행할 수있는 개체가 필요합니다.

[[NSDate date] dateByAddingTimeInterval: -20*60]; 

(NSDate date은 현재 날짜와 시간 임).

+0

대단히 감사합니다. 이제 새 코드는 다음과 같이 나타납니다 :'localNotif.fireDate = [[NSDate date] dateByAddingTimeInterval : -20 * 60];'따라서, 알림 센터는 사용자가 입력 한 날짜를 자동으로 감지합니다. 또한 앱이 실행되고 있지 않을 때? 죄송합니다. 아직 완전히 새로운 것입니다. – John

+1

아니요, 아무도 사용자가 입력 한 날짜를 감지하지 못합니다. 너 스스로 그렇게해야 해. 'NSDateFormatter' 문서를 확인하십시오. 찾고있는 메소드는'dateFromString :'입니다. – fzwo