2017-07-28 3 views
0

J'ai créé une application de liste de tâches. Dans l'application, l'utilisateur peut sélectionner 1 des 4 boutons pour définir une notification. Immédiat, matin, après-midi et soir. Actuellement, la soirée et le travail immédiat, mais le matin et l'après-midi ne fonctionnent pas et je ne sais pas pourquoi.DateComponents et notifications non affichées

Voici mon code pour la soirée:

@IBAction func eveningTapped(_ sender: Any) { 

    eveningEnabled = true 
    morningEnabled = false 
    lockscreenEnabled = false 
    afternoonEnabled = false 
} 

if eveningEnabled == true { 
     var dateComponents = DateComponents() 
     dateComponents.hour = 18 
     dateComponents.minute = 00 
     let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false) 
     let content = UNMutableNotificationContent() 
     content.title = taskTextField.text! 
     content.body = DescTextField.text! 
     content.sound = UNNotificationSound.default() 
     content.badge = 1 

     let identifier = "UYLLocalNotification" 
     let request = UNNotificationRequest(identifier: identifier, 
              content: content, trigger: trigger) 
     center.add(request, withCompletionHandler: { (error) in 
      if error != nil { 
       // Something went wrong - another alert 
      } 
     }) 
    } 

Cela fonctionne tout à fait bien, mais le matin ne fonctionne pas, voici le code:

@IBAction func morningTapped(_ sender: Any) { 

    morningEnabled = true 
    lockscreenEnabled = false 
    afternoonEnabled = false 
    eveningEnabled = false 
} 

if morningEnabled == true { 
     var dateComponents = DateComponents() 
     dateComponents.hour = 07 
     dateComponents.minute = 00 
     let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false) 
     let content = UNMutableNotificationContent() 
     content.title = taskTextField.text! 
     content.body = DescTextField.text! 
     content.sound = UNNotificationSound.default() 
     content.badge = 1 

     let identifier = "UYLLocalNotification" 
     let request = UNNotificationRequest(identifier: identifier, 
              content: content, trigger: trigger) 
     center.add(request, withCompletionHandler: { (error) in 
      if error != nil { 
       // Something went wrong - another alert 
      } 
     }) 
    } 
+0

Est-ce votre vrai code? Les {} ne correspondent pas. – Willeke

Répondre

1

Étant donné que votre code est absolument identique (sauf les composants Date) dans les deux actions, il ne devrait y avoir aucune différence lors de l'exécution.

Mais comme vous avez une différence ('matin' ne fonctionne pas) la raison DOIT être ailleurs (et non dans le code, que vous avez posté ici). Votre tapAction for morning n'est peut-être pas correctement connecté dans InterfaceBuilder?

Si vous publiez plus de code, nous pourrions probablement mieux vous aider à trouver le bogue.

Vous devez d'abord vérifier si votre action tapAction est en cours, lorsque vous appuyez sur. Vous pouvez le faire en ajoutant une commande de journal, comme ceci:

print("Morning was tapped") 

et de mettre ce code dans votre actionAction. Ensuite, vous devriez obtenir ce journal sur votre console de journal, après avoir appuyé sur le bouton correspondant.

+0

Ok, donc j'ai vérifié mes connexions et quand le bouton fonctionne correctement et tout est connecté correctement. Je vais tester à nouveau la notification car mon projet a joué récemment. Vous tiendrons au courant –

+0

Tout fonctionne maintenant. Pour une raison quelconque, les connexions étaient un peu bizarres. Merci pour l'aide –

+0

Donc, ce serait bien si vous marquez ma réponse comme la bonne réponse! – LukeSideWalker