2011-11-07 7 views
0

本来の寿命を持つコアデータにオブジェクトを格納しています。私はこのライフスパンのためのオブジェクト作成に関するローカル通知をスケジュールしていました。そして、オブジェクトを処理することは通知を発しました。コアデータにポインタを格納する

問題は、オブジェクトが早期に終了できることです。しかし、地方の通知はこれを知らず、それぞれの時間にはまだ発砲して混乱を招く。オブジェクトへの通知へのポインタを格納する方法はありますか?したがって、早期に終了する場合は、キャンセルすることができます。

正常終了した場合は、いつ終了するのかをユーザーに知らせる必要があるため、通知を受けたいと思います。通知はアプリの実行に依存しません。

基本的な質問コアデータにオブジェクトへのポインタを格納することができます。 2番目の質問は、ローカルの通知が寿命中にメモリアドレスを変更する場合です

私はただそれらをすべてキャンセルし、早く終わったら必要なものを再スケジュールすることができますが、それはちょうど無駄だとうまくいけば良い方法があると思います。

答えて

4

UILocalNotificationはシリアル化できません(NSCodingは実装されていません)。そのため、Core Dataで永続的に保存することはできません。コアデータエンティティのmanagedObjectIDをシリアル化可能な形式(URLなど)で通知のuserInfoプロパティに追加することをお勧めします。特定の通知を削除する必要がある場合は、対応する管理対象オブジェクトIDがuserInfoのローカル通知をUIApplicationの 'scheduledLocalNotificationsアレイで検索し、cancelLocalNotification:でその通知をキャンセルします。

0

ヘッズアップ - 私はこのトピックを検討してきた、と私は@MrMageから答えをいくつかの矛盾する情報を見ている:

  1. UILocalNotificationはthe Apple doc
  2. ごとにNSCodingに準拠しない。ここに答えがありますエンティティ内のプロパティとしてlocalnotificationを保存するためにあなたを有効にする必要がありますNSDataの中にローカル通知を保存する方法について説明しstackoverflowの:Delete a particular local notification

ていないが、このトピックに関する専門家なので、 nyのフィードバックは素晴らしいでしょう。

関連する問題