Je reçois un message d'erreur indiquant que ma classe ne se conforme pas à NSObjectProtocol. Je ne sais pas ce que cela signifie. J'ai implémenté toutes les fonctions de la WCSessionDelegate, ce n'est donc pas le problème. Quelqu'un sait-il quel est le problème? Merci!
import Foundation
import WatchConnectivity
class BatteryLevel: WCSessionDelegate {
var session: WCSession? {
didSet {
if let session = session {
session.delegate = self
session.activate()
}
}
}
var batteryStatus = 0.0;
func getBatteryLevel(){
if WCSession.isSupported() {
// 2
session = WCSession.default()
// 3
session!.sendMessage(["getBatteryLevel": ""], replyHandler: { (response) -> Void in
if (response["batteryLevel"] as? String) != nil {
self.batteryStatus = (response["batteryLevel"] as? Double)! * 100
}
}, errorHandler: { (error) -> Void in
// 6
print(error)
})
}}
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
}
func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
}
}
Voir Pourquoi dans Swift nous ne pouvons pas adopter un protocole sans hériter d'une classe de NSObject?
En bref, WCSessionDelegate
hérite lui-même de NSObjectProtocol
et vous devez donc également implémenter des méthodes dans ce protocole. Le moyen le plus simple d'implémenter ces méthodes consiste à sous-classer NSObject
:
class BatteryLevel: NSObject, WCSessionDelegate
Notez que vous traitez avec les API Obj-C ici.