self.init Swift 2.2中的调用中的额外参数

涡流

我一直在寻找此错误并阅读各种stackoverflow,Apple文档和博客答案,但仍然有问题。我有一个符合NSData和NSCoding的类,其中将存储6个属性中的3个。当在所需的便利init中调用self.init时,即使self.init签名与init完全匹配(我已复制并粘贴),我也会收到错误消息“ call中的额外参数'groomedStatus'”。这是相关代码:

class Trail: NSObject, NSCoding {
var name: String
var difficulty: Difficulty
var haveSkied: Bool
var season: Season = .winter
var open: String?
var groomedStatus: String?

init(name: String, difficulty: Difficulty, haveSkied: Bool, season: Season, open: String?, groomedStatus: String?) {
    self.name = name
    self.difficulty = difficulty
    self.haveSkied = haveSkied
    self.season = season
    self.open = open
    self.groomedStatus = groomedStatus
}

required convenience init(coder aDecoder: NSCoder) {

    let haveSkied = aDecoder.decodeObjectForKey("haveSkied") as! Bool
    let open = aDecoder.decodeObjectForKey("open") as? String
    let groomedStatus = aDecoder.decodeObjectForKey("groomedStatus") as? String


    self.init(name: String, difficulty: Difficulty, haveSkied: Bool, season: Season, open: String?, groomedStatus: String?) {
        self.name = name
        self.difficulty = difficulty
        self.haveSkied = haveSkied
        self.season = season
        self.open = open
        self.groomedStatus = groomedStatus
    }

func encodeWithCoder(aCoder: NSCoder) {
    aCoder.encodeBool(haveSkied, forKey: "haveSkied")
    aCoder.encodeObject(open, forKey: "open")
    aCoder.encodeObject(groomedStatus, forKey: "groomedStatus")
}

}

davetw12

问题来自于您的通话方式self.init()您在代码中执行此操作的方式实质上是尝试对其进行重新定义,这对编译器没有意义。这就是您应该self.init()在便捷初始化程序中调用的方式

self.init(name: "yourActualNameString", difficulty: Difficulty(), haveSkied: true, season: .winter, open: "yourActualOpenString", groomedStatus: "yourActualGroomedStatusString")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

调用中位置 #2、#3 的额外参数 - Swift

Swift:在init内调用self方法

Swift 5:在“ self.init”调用之前使用“ self”

在Swift 1.2的init方法中将self作为参数传递

Swift:Self.init在初始化程序中多次调用

Swift:便捷初始化程序-在self.init调用之前使用的Self

在调用self.init之前使用的iOS Swift便捷初始化程序self

Swift 2中的调用中缺少参数选项的参数

Swift中的额外参数调用

在Swift 2,Xcode 7.0.1中使用'self'

__init __(self)-> None:vs __init __(self):在python中

为什么Swift不允许在类init中而不是在协议init中分配给self?

在if((self = [super init]))中未检测到cocos2d冲突

Python __init __(self,** kwargs)接受1个位置参数,但给出了2个

Alamofire Swift 3.0调用中的额外参数

.request调用中的额外参数-Alamofire + Swift

Swift调用中的额外参数“谓词”

调用中的额外参数“委托”(Swift 3)

只要init调用[super init],在Objective C自定义init方法中调用[self init]是否可以?

调用'self.init'之前使用'self'的错误,或在其他模块中的init上给'self'赋值

在Swift中没有参数的便利init?

如何在Swift中调用[self new]

在super.init中引用self

init快速让子类中引用self的属性

Python 3 中的 __init__ 和 self

Swift类中的错误:super.init调用时未初始化属性-如何初始化需要在其初始值设定项参数中使用self的属性

Swift中的块显示错误“调用中的参数#2缺少参数”

在init()中初始化2个变量:'self'在初始化所有存储的属性之前使用

Swift:在super.init初始化自我编译错误之前在方法调用中使用'self'