Reputation: 5149
I don't understand why my code doesn't work. Here it is:
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()
}
}
And the error:
Type Test does not conform to protocol 'NSObjectProtocol'.
Any ideas?
Upvotes: 27
Views: 6566
Reputation: 14033
I got this error when I mistyped NSObject
as NSOBject
, because if you mistype it, then it isn't technically conforming to NSObject
. Hope that helps someone.
Upvotes: 1
Reputation: 13053
I tried to make my class conform to protocol FBSDKSharingDelegate
and got the same error. When I tried to make my subclass with superclass UIView
conform to the protocol, the error went away.
Upvotes: 0
Reputation: 27550
If you follow up the inheritance chain, NSURLSessionDataDelegate
inherits NSURLSessionTaskDelegate
, which inherits NSURLSessionDelegate
, which inherits, NSObjectProtocol
. This protocol has various required methods like isEqual(_:)
and respondsToSelector(_:)
which you class does not implement.
Generally what you would do here is make your class inherit NSObject
which conforms to NSObjectProtocol
:
class Test: NSObject, NSURLSessionDataDelegate {
...
}
Upvotes: 45