2016-07-20 80 views
0

我正在继承NSURLRequest。为创建的类创建自定义init方法。虽然编码,我结束了以下错误。“‘必要’初始化‘的init(编码器:)’必须的‘的NSURLRequest’子类中提供” ......Swift:错误:“必需的”初始化'初始化(编码器:)'必须由'NSURLRequest'的子类提供“

我的代码是

import Foundation 

class URLRequest: NSURLRequest { 
    init (UrlRequestWithURL: NSString, setHTTPBody: NSData, shouldHandleCookies: Bool, isHTTPMethodPost: Bool, withTimeoutInterval: NSTimeInterval) 
    { 

    } 

// Here it shows the error 
} 

帮助我对此..

除了上述问题....

  1. 我是否真的需要子类化NSUrlRequest ..(创建urlrequest变量的目的是创建必须分配给urlsession变量的多个请求。)还有其他方法可以满足目的吗?

  2. 如何在swift中创建单例类。所有这些日子我都与objc合作过。我觉得很难制定它。

+0

Re#2:关于Swift“singletons”的一切都在http://stackoverflow.com/questions/24024549/using-a-dispatch-once-singleton-model-in-swift中说过。 –

+0

由于NSURLRequest实现了'NSCoding',所以你必须实现'NSCoding',它需要你实现所需的初始化器。你需要子类NSURLRequest?可能不会,但你没有清楚地解释你为什么这样做。有一个很好的机会,你可以使用扩展 – Paulw11

+0

添加init(编码器解码器:NSCoder){超级初始(编码器:解码器) }并尝试 –

回答

0

我会避免子类化NSURLRequest。当我这样做时,我遇到了非常奇怪的行为(并且越来越差的行为越差越好,您支持iOS版本)。

你最好不要添加类的方法和使用NSURLProtocolpropertyForKey:inRequest:setProperty:forKey:inRequest:方法。

相关问题