2016-05-29 32 views
0

Ich versuche eine App zu erstellen, die lokale Benachrichtigungen mit zufälligem Text erhält. Ich habe Code benutzt, aber es funktioniert nicht gut. Es kommt nur "006" oder "005", und es wird sich nicht ändern.Wie wird zufälliger Text in UILocalNotifications verwendet?

Der Code, den ich verwendet wird:

let myArray = ["000", "001", "002", "003", "004", "005", "006"] 


let notification = UILocalNotification() 
notification.alertBody = myArray[Int(arc4random_uniform(UInt32(myArray.count)))] // text that will be displayed in the notification 
notification.fireDate = NSDate() // right now (when notification will be fired) 
notification.soundName = UILocalNotificationDefaultSoundName // play default sound 
notification.repeatInterval = NSCalendarUnit.NSHourCalendarUnit // this line defines the interval at which the notification will be repeated 

UIApplication.sharedApplication().scheduleLocalNotification(notification) 

Können Sie mir bitte zeigen, wo ich Fehler gemacht? Vielen Dank.

+0

dieses Codes nicht einmal bekommen genannt, aber Sie starten die App mehrmals? arc4random_uniform ist wahrscheinlich (ich kann mich nicht darum kümmern, es nachzuschlagen) wiederholt zufällig, und wenn es daher immer mit dem gleichen Seed läuft, dann wird es immer die gleiche Ausgabe erzeugen. Wenn es wiederholt zufällig ist, müssen Sie den Anfangswert des Samens auf die aktuelle Zeit in Millisekunden ändern und dann das Ergebnis mit der Array-Anzahl modulieren. – Gruntcakes

+0

@ThePumpingLama Ich habe die Logik davon. Das Problem liegt in 'notification.alertBody = myArray [Int (arc4random_uniform (UInt32 (myArray.count))]]. Kann dieser Teil automatisch ausgeführt werden? Weil alles Code, den ich gepostet habe, in einer Aktion einer Taste ist und wenn ich die Taste drücke, führe ich diesen ganzen Code aus (Code in der Antwort). So ist es in I-Richtung möglich, "alertBody" selbst auszuführen? – Emm

+0

Ja. Aber ich bin verwirrt, weil das, was du anrufst, nichts damit zu tun hat, was du als Samen dazu benutzt hast. Ist das nun eine neue Frage, oder glauben Sie, dass es eine Verbindung gibt? – Gruntcakes

Antwort

0

Was Sie tun, ist korrekt. Vielleicht haben Sie Ihren Code nicht genug ausprobiert und hatten eine lange Reihe von Extremwerten.

enter image description here

+0

Ja, ich weiß und ich habe es viele Male versucht, aber ich kann nicht verstehen, warum es sich nicht ändern wird. Ich denke, wenn die Benachrichtigung ausgeführt wird, fängt es nur einen String vom Array ab, und es wird sich nicht ändern. Also vielleicht funktioniert das nur beim Ausführen. – Emm