【问题标题】:Type CCC doesnt conform to protocol 'NSObjectProtocol'类型 CCC 不符合协议“NSObjectProtocol”
【发布时间】:2016-01-06 16:35:11
【问题描述】:

我不明白为什么我的代码不起作用。这里是:

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”。

有什么想法吗?

【问题讨论】:

    标签: swift swift-protocols nsobjectprotocol


    【解决方案1】:

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

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

    class Test: NSObject, NSURLSessionDataDelegate {
        ...
    }

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 那是因为UIView 已经继承了NSObject(通过UIResponder)。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-23
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多