无法调用符合协议的类的类型方法
问题描述:
我的代码非常简单。无法调用符合协议的类的类型方法
我的协议:
protocol BaseEntity
{
class func getInstance(sourceObject: [NSObject : AnyObject], context: AnyObject!) -> BaseEntity
init()
}
然后在另一个I类具有此方法:
private func convertJSONDictionaryIntoModel(jsonDictionary : [NSObject : AnyObject], mapClass: BaseEntity.Type) -> BaseEntity
{
let object = mapClass.getInstance(jsonDictionary, context: nil)
return object
}
我对读作“协议类型值BaseEntity的访问成员的第一行编译错误.Type未实现“
据我所知,这在Swift中是可能的。
答
我刚刚也遇到过这个!这意味着Swift编程语言不支持协议内部的类方法。这个解决方法似乎取决于具体的情况,没有“你应该这样做”。如果有人有更好的解决方案,请分享!
这也与类变量的情况下,但有一个hacky workaround for that.
不幸的是,我找不到任何解决这个。我能够接受它的唯一方法是使用泛型,但泛型也有其自身的局限性。这些问题让我真的认为语言不完整。他们的意图是让事情变得更简单和更明确......好吧,如果他们不支持这些东西,并且必须依靠一些解决方法作为你所暴露的东西,那么这些东西已经非常麻烦了。 – mdonati 2014-12-09 04:45:20