繁体   English   中英

Swift-实例“无法用'...”构造为“静态”方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM