2012-01-18 31 views
0

ユーザーがUITextFieldにデータを入力できるアプリを作成しました。その1つでは、特定の日付に入力することができます。私は、アプリがまったく動作していないときでさえ、日付が15時間離れたときに、iPhoneの通知センターにアラートを表示しようとしています。iPhone:通知センターの問題

EDIT:[-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を設定します。

EDIT: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]; localNotif。fireDate = [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

ありがとうございます。 mエラーを取得する "セレクタの既知のクラスメソッドがありません" meetingDateField " – John

1

、あなたはNSDateオブジェクトを持っている必要があります。上記のコードでは、あなたはしません。

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

youreのメッセージdateByAddingTimeInterval:を送信しようとしている:それはのようなものになるはずですか?誰も。メソッドの実行対象となるメッセージの受信者が必要です。

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

NSDate dateは現在の日付と時刻です)。

+0

素晴らしいです、ありがとうございます。新しいコードは次のようになります: 'localNotif.fireDate = [[NSDate date] dateByAddingTimeInterval:-20 * 60];'したがって、通知センターは、ユーザが入力した日付を自動的に検出して、また、アプリが実行されていないとき申し訳ありませんが、私はまだかなり新しいです。 – John

+1

いいえ、誰もユーザーが入力した日付を検出しません。あなたはそれを自分でする必要があります。 NSDateFormatterのドキュメントをチェックしてください。あなたが探しているメソッドは 'dateFromString:'です。 – fzwo