2016-11-20 7 views
36
ile uyumlu değil

Sınıfımın NSObjectProtocol ile uyumlu olmadığı konusunda bir hata alıyorum, bunun ne anlama geldiğini bilmiyorum. Ben WCSessionDelegate gelen tüm işlevi uyguladı, bu sorun değil. Birisi sorunun ne olduğunu biliyor mu? Teşekkürler!Sınıf, NSObjectProtocol

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]) { 
    } 
} 

cevap

84

kendisi nedenle bunu da protokolde yöntemleri uygulamak gerekir NSObjectProtocol devraldığı, Kısacası WCSessionDelegate

Why in swift we cannot adopt a protocol without inheritance a class from NSObject? bakınız. bu yöntemleri uygulamak için en kolay yolu NSObject alt sınıfı için geçerli: Burada Obj-C API'leri ile ilgileniyor

class BatteryLevel: NSObject, WCSessionDelegate 

Not.

+0

Her zaman basit cevaplar bulmak zor! Basit cevabınız için teşekkür ederim :) – Mansour