Тип CCC не соответствует протоколу NSObjectProtocol,
Я не понимаю, почему мой код не работает. Вот он:
class Test: NSURLSessionDataDelegate {
func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?) {
if(error == nil) {
print("Hallo")
} else {
print(error?.userInfo)
}
}
func createRequest() {
let dictionary = [
"mailAddress":"[email protected]",
.....
]
let nsData: NSData?
do {
nsData = try NSJSONSerialization.dataWithJSONObject(dictionary, options: NSJSONWritingOptions(rawValue:0))
} catch _ {
nsData = nil
}
let defaultConfigObject = NSURLSessionConfiguration.defaultSessionConfiguration()
let defaultSession = NSURLSession(configuration: defaultConfigObject, delegate: self, delegateQueue: NSOperationQueue.mainQueue())
let url = NSURL(string: "http:...")!
let urlRequest = NSMutableURLRequest(URL: url)
urlRequest.HTTPMethod = "POST"
urlRequest.HTTPBody = nsData
urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
let dataTask = defaultSession.dataTaskWithRequest(urlRequest)
dataTask.resume()
}
}
И ошибка:
Тест типа не соответствует протоколу NSObjectProtocol.
Любые идеи?
Ответы
Ответ 1
Если вы следуете цепочке наследования, NSURLSessionDataDelegate
наследует NSURLSessionTaskDelegate
, который наследует NSURLSessionDelegate
, который наследует, NSObjectProtocol
. Этот протокол имеет различные требуемые методы, такие как isEqual(_:)
и respondsToSelector(_:)
, которые ваш класс не реализует.
Как правило, вы должны сделать свой класс наследуемым NSObject
, который соответствует NSObjectProtocol
:
class Test: NSObject, NSURLSessionDataDelegate {
...
}
Ответ 2
Я попытался сделать свой класс совместимым с протоколом FBSDKSharingDelegate
и получил ту же ошибку. Когда я пытался сделать мой подкласс с суперклассом UIView
совместимым с протоколом, ошибка исчезла.
Ответ 3
Я получил эту ошибку, когда неправильно набрал NSObject
как NSOBject
, потому что, если вы его неправильно напечатали, то он технически не соответствует NSObject
. Надеюсь, что это помогает кому-то.