类型CCC不符合协议'NSObjectProtocol'
问题描述:
我不明白为什么我的代码不起作用。那就是:类型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()
}
}
和错误:
Type Test does not conform to protocol 'NSObjectProtocol'.
任何想法?
答
如果跟进继承链,NSURLSessionDataDelegate
继承NSURLSessionTaskDelegate
,它继承NSURLSessionDelegate
,它继承,NSObjectProtocol
。该协议有各种所需的方法,如您类没有实现的isEqual(_:)
和respondsToSelector(_:)
。
通常你会在这里做的是让你的类继承NSObject
这符合NSObjectProtocol
:
class Test: NSObject, NSURLSessionDataDelegate {
...
}
答
我试图让我的课符合协议FBSDKSharingDelegate
,并得到了同样的错误。当我试图让超类UIView
的子类符合协议时,错误消失了。