2016-11-20 3 views
36

내 클래스가 NSObjectProtocol을 준수하지 않는다는 오류가 발생합니다. 이것이 의미하는 바를 모르겠습니다. 문제가되지 않도록 WCSessionDelegate의 모든 함수를 구현했습니다. 누군가 문제가 무엇인지 압니까? 감사!클래스가 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]) { 
    } 
} 

답변

84

자체 따라서 당신도 해당 프로토콜의 메소드를 구현해야 NSObjectProtocol에서 상속, 즉 WCSessionDelegate

Why in swift we cannot adopt a protocol without inheritance a class from NSObject?를 참조하십시오. 그 방법을 구현하는 가장 쉬운 방법은 NSObject를 서브 클래 싱하는 것입니다 : 당신이 여기의 Obj-C API를 다루고있는

class BatteryLevel: NSObject, WCSessionDelegate 

참고.

+0

항상 간단한 답변을 찾을 수 없습니다! 간단한 답변 주셔서 감사합니다 :) – Mansour

관련 문제