实例化 Swift 类时调用站点出错

Posted

技术标签:

【中文标题】实例化 Swift 类时调用站点出错【英文标题】:Error with call site when instantiating Swift class 【发布时间】:2014-06-12 11:43:11 【问题描述】:

当我从 Swift 类实例化一个新对象时,我在调用中收到 Extra Argument 'frameCaptureDate' 错误。 附上代码。 发生在 Playground 和 App 中。

class SwiftFrame <NSCoding> 

    var frameFilePath: NSURL
    var frameCaptureDate: NSDate

    init(frameFilePath: NSURL, frameCaptureDate: NSDate) 
        self.frameFilePath = frameFilePath
        self.frameCaptureDate = frameCaptureDate
    

    init(coder: NSCoder) 
        self.frameCaptureDate = coder.decodeObjectForKey("GIFFrameCaptureDate") as NSDate
        self.frameFilePath = coder.decodeObjectForKey("GIFFrameFilePath") as NSURL
    

    func encodeWithCoder(aCoder: NSCoder) 
        aCoder.encodeObject(self.frameCaptureDate, forKey: "GIFFrameCaptureDate")
        aCoder.encodeObject(self.frameFilePath, forKey: "GIFFrameFilePath")
    



var date = NSDate.date()
var urlstring = NSURL(string: "http://apple.com")
var sf = SwiftFrame(frameFilePath: urlstring, frameCaptureDate: date) //Error here: "Extra Argument 'frameCaptureDate' In Call"

【问题讨论】:

【参考方案1】:

看起来该错误是类声明中语法错误的副作用。在 Swift 中,这是您指定协议一致性的方式。

class SwiftFrame: NSCoding 
    // stuff

【讨论】:

是的!你是对的,它检测你是指我现在记得的超类还是协议......非常感谢!将尽快标记为答案,让我...

以上是关于实例化 Swift 类时调用站点出错的主要内容,如果未能解决你的问题,请参考以下文章

关于在不知道具体实例化哪个窗体时调用该窗体公共变量的方法

abstract 关键字

为啥我在实例化接口时会出错?

抽象类和抽象方法

如何将自定义代码注入 Swift 中内置类的每个实例化?

Java中LinkedList类为何无法用List接口引用来实例化