我不明白为什么我的代码不起作用。这是:
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":"foo@example.com",
.....
]
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'。
有什么想法吗?
答案 0 :(得分:30)
如果您跟进继承链,NSURLSessionDataDelegate
会继承NSURLSessionTaskDelegate
,继承NSURLSessionDelegate
,继承NSObjectProtocol
。此协议具有各种必需的方法,例如您的类未实现的isEqual(_:)
和respondsToSelector(_:)
。
一般来说,你在这里做的是让你的类继承NSObject
符合NSObjectProtocol
:
class Test: NSObject, NSURLSessionDataDelegate {
...
}
答案 1 :(得分:0)
我试图使我的类符合协议FBSDKSharingDelegate
并得到相同的错误。当我试图使我的超类UIView
的子类符合协议时,错误就消失了。
答案 2 :(得分:0)
当我将NSObject
错误键入为NSOBject
时出现此错误,因为如果您键入错误,则从技术上讲它不符合NSObject
。希望能对某人有所帮助。