Je travaille sur une application simple qui affiche simplement l'heure et le niveau de la batterie. La partie temps fonctionne parfaitement, et je peux surveiller le niveau de la batterie, mais l'icône de l'indicateur de batterie bloque l'application quand il y a des changements à la batterie de l'appareil. Voici le code correspondant:NSException non interceptée lorsque le niveau de la batterie change
override func viewDidLoad() {
super.viewDidLoad()
UIDevice.current.isBatteryMonitoringEnabled = true // Enable battery monitoring
NotificationCenter.default.addObserver(self, selector: Selector(("batteryStateDidChange:")), name: NSNotification.Name.UIDeviceBatteryStateDidChange, object: nil) // Add battery state checker
NotificationCenter.default.addObserver(self, selector: Selector(("batteryLevelDidChange:")), name: NSNotification.Name.UIDeviceBatteryLevelDidChange, object: nil) // Add battery level checker
// Get the battery level
var batteryLevel: Int {
return Int(UIDevice.current.batteryLevel * 100)
}
update()
timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.update), userInfo: nil, repeats: true) // Start the timed scheduler
}
est ici l'erreur:
2017-06-24 11:45:27.783761-0500 SimpleClock[1484:846193] -[SimpleClock.ViewController batteryLevelDidChange:]: unrecognized selector sent to instance 0x15dd15bc0
2017-06-24 11:45:27.785656-0500 SimpleClock[1484:846193] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[SimpleClock.ViewController batteryLevelDidChange:]: unrecognized selector sent to instance 0x15dd15bc0'
*** First throw call stack:
(0x181c65858 0x18043c528 0x181c72a6c 0x188815140 0x181c6af68 0x181b4ce5c 0x181bf3004 0x181bf25a4 0x181bf2308 0x181c74268 0x181b2a4e4 0x1826f32d4 0x1884abd60 0x1884abbc8 0x181ecdaf0 0x181beda68 0x181c0cbc8 0x181c0c370 0x181c09d80 0x181b28280 0x183639f94 0x1884d70f0 0x100da10e4 0x180919e40)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
Ne postez pas un lien vers votre code. [Modifier] votre question avec le code pertinent, sous forme de texte. – rmaddy
Le message d'erreur * batteryLevelDidChange:]: sélecteur non reconnu ... * est assez clair. La méthode est manquante ou la signature est erronée. – vadian
PS: utilise la syntaxe native n Swift '# selector'. L'avantage est que vous obtenez l'erreur au moment de la compilation. – vadian