CCC 类型不符合协议 'NSObjectProtocol'

Type CCC doesnt conform to protocol '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()

    }
}

错误:

Type Test does not conform to protocol 'NSObjectProtocol'.

有什么想法吗?

如果顺着继承链往下看,NSURLSessionDataDelegate继承NSURLSessionTaskDelegateNSURLSessionDelegate继承NSURLSessionDelegateNSObjectProtocol继承NSObjectProtocol。该协议有各种必需的方法,例如 isEqual(_:)respondsToSelector(_:),您 class 没有实现这些方法。

通常,您在这里要做的是让您的 class 继承 NSObject,它符合 NSObjectProtocol:

class Test: <strong>NSObject</strong>, NSURLSessionDataDelegate {
    ...
}

我试图让我的 class 符合协议 FBSDKSharingDelegate 并得到同样的错误。当我试图让我的 subclass 和 superclass UIView 符合协议时,错误消失了。

当我将 NSObject 错误输入为 NSOBject 时出现此错误,因为如果您输入错误,那么它在技术上不符合 NSObject。希望对某人有所帮助。