2014-12-06 61 views
5

我的代码非常简单。无法调用符合协议的类的类型方法

我的协议:

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中是可能的。

回答

0

我刚刚也遇到过这个!这意味着Swift编程语言不支持协议内部的类方法。这个解决方法似乎取决于具体的情况,没有“你应该这样做”。如果有人有更好的解决方案,请分享!

这也与类变量的情况下,但有一个hacky workaround for that.

+0

不幸的是,我找不到任何解决这个。我能够接受它的唯一方法是使用泛型,但泛型也有其自身的局限性。这些问题让我真的认为语言不完整。他们的意图是让事情变得更简单和更明确......好吧,如果他们不支持这些东西,并且必须依靠一些解决方法作为你所暴露的东西,那么这些东西已经非常麻烦了。 – mdonati 2014-12-09 04:45:20

相关问题