[英]Swift - Instance “not constructible with '…” from “static” method
当我尝试通过“静态”方法(协议要求)实例化类时,尽管我传递了正确的参数,但编译器无法识别初始化程序。
问题是您在方法声明中定义了一个名为“ Comment”的模板,该模板掩盖了真正的Comment
类。 您需要为该模板参数指定其他名称。
而且我相信您的JSONSerializable协议并未按照您想要的方式进行定义。 您可以在协议中使用Self
来引用实现该协议的类,因此不需要模板。 您的协议可能如下所示:
protocol JSONSerializable {
class func instanceFrom(json: [String:AnyObject]) -> Self;
}
然后,您可以在Comment类中实现此方法:
class Comment: JSONSerializable {
...
class func instanceFrom(json: [String:AnyObject]) -> Comment {
return Comment(message: "lorem lorem", author: User())
}
}
但是,在Swift中最好使用初始化器而不是类方法:
protocol JSONSerializable {
init(json: [String:AnyObject])
}
class Comment: JSONSerializable {
...
init(json: [String : AnyObject]) {
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.