2016-01-06 102 views
9

我不明白为什么我的代码不起作用。那就是:类型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'.

任何想法?

回答

21

如果跟进继承链,NSURLSessionDataDelegate继承NSURLSessionTaskDelegate,它继承NSURLSessionDelegate,它继承,NSObjectProtocol。该协议有各种所需的方法,如您类没有实现的isEqual(_:)respondsToSelector(_:)

通常你会在这里做的是让你的类继承NSObject这符合NSObjectProtocol

class Test: NSObject, NSURLSessionDataDelegate { 
    ... 
}
0

我试图让我的课符合协议FBSDKSharingDelegate,并得到了同样的错误。当我试图让超类UIView的子类符合协议时,错误消失了。

相关问题