类型CCC不符合协议'NSObjectProtocol'

时间:2016-01-06 16:35:12

标签: swift swift-protocols 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":"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'。

有什么想法吗?

3 个答案:

答案 0 :(得分:30)

如果您跟进继承链,NSURLSessionDataDelegate会继承NSURLSessionTaskDelegate,继承NSURLSessionDelegate,继承NSObjectProtocol。此协议具有各种必需的方法,例如您的类未实现的isEqual(_:)respondsToSelector(_:)

一般来说,你在这里做的是让你的类继承NSObject符合NSObjectProtocol

class Test: NSObject, NSURLSessionDataDelegate {
    ...
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

当我将NSObject错误键入为NSOBject时出现此错误,因为如果您键入错误,则从技术上讲它不符合NSObject。希望能对某人有所帮助。