在Swift中声明符合协议的类

时间:2014-08-05 11:59:02

标签: swift

在objective-C中,我们可以声明一个符合某个协议的类

@property (nonatomic, strong) Class<UIObjectRestoration> objectRestorationClass;

并可以将值指定为

someObject.objectRestorationClass = [SomeClass class];

问题是: 我怎么能在Swift中做到这一点?我尝试使用

var objectRestorationClass: UIObjectRestoration!

someObject.objectRestorationClass = SomeClass.self

但它给了我错误

  

'SomeClass.Type'不会转换为协议'UIObjectRestoration'

SomeClass是:

class SomeClass: UIViewController, UIObjectRestoration {

 class func objectWithRestorationIdentifierPath(identifierComponents: [AnyObject]!, coder: NSCoder!) -> UIStateRestoring! {

        return restoringObject
    }

}

我尝试通过类型转换它,但它给了我同样的错误。

2 个答案:

答案 0 :(得分:0)

[UIObjectRestoration]是UIObjectRestoration项的数组。使用 var objectRestorationClass : UIObjectRestoration并使用objectRestorationClass = SomeClass.classForCoder

指定值

答案 1 :(得分:0)

您可以使用

var objectRestorationClass: UIObjectRestoration.Type!