2016-11-20 6 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

関連する問題