반응형
클래스가 NSObjectProtocol을 준수하지 않습니다.
이 질문에 이미 답변이 있습니다.
내 클래스가 NSObjectProtocol을 준수하지 않는다는 오류가 발생합니다. 이것이 무엇을 의미하는지 모르겠습니다. 문제가되지 않도록 WCSessionDelegate의 모든 기능을 구현했습니다. 누군가 문제가 무엇인지 알고 있습니까? 감사!
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]) {
}
}
Swift에서 NSObject의 클래스 상속없이 프로토콜을 채택 할 수없는 이유를 참조하십시오 .
요컨대, WCSessionDelegate
그 자체가 상속되기 NSObjectProtocol
때문에 해당 프로토콜에서도 메서드를 구현해야합니다. 이러한 메서드를 구현하는 가장 쉬운 방법은 하위 클래스를 만드는 것입니다 NSObject
.
class BatteryLevel: NSObject, WCSessionDelegate
여기서는 Obj-C API를 다루고 있습니다.
참고 URL : https://stackoverflow.com/questions/40705591/class-does-not-conform-nsobjectprotocol
반응형
'program tip' 카테고리의 다른 글
HTML / CSS 입력 유형 =“버튼”에 이미지 아이콘을 추가하는 방법은 무엇입니까? (0) | 2020.08.16 |
---|---|
제시된보기 컨트롤러 닫기 (0) | 2020.08.16 |
배시 변수 범위 (0) | 2020.08.16 |
Enter 키를 누를 때 모달 해제 방지 (0) | 2020.08.16 |
작동하지 않는 JavaScript 규칙은 무엇입니까? (0) | 2020.08.15 |