2016-01-06 183 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的子類符合協議時,錯誤消失了。

相關問題