2017-07-02 90 views
1

我在Item类中有一个类型为ProtocolItem1协议的变量。我想要做的就是能够使用这个类,并在这个变量中保存符合ProtocolItem1协议的对象,这可能吗?我知道在Java中你可以创建一个接口,并以这种方式实现它。在目标C我见过ID,请让我知道。符合协议的变量接受符合协议的变量

代码:

class Item : NSObject { 
    var obj: ProtocolItem1? 

    //Other functions and variables 
} 

class Item2: ProtocolItem1 { 
    //variables and methods 
} 

class OtherClass: UIViewController { 
    var dataSource: Item 
    //other functions 
    override func viewDidLoad(){ 
     var object1: Item2 = Item2() 
     dataSource.obj = object1 
    } 
} 

回答

1

简短的回答:是的。

在Swift中,您可以使用协议类型创建一个属性。只要符合指定的协议,任何对象都可以分配给该属性。

以下稍微修改过的代码版本是有效的Swift。

protocol ProtocolItem1 {} 

class Item: NSObject { 
    var obj: ProtocolItem1? 
} 

class Item2: ProtocolItem1 {} 

class OtherClass: UIViewController { 

    var dataSource: Item? 

    override func viewDidLoad(){ 
     let object1 = Item2() 
     dataSource?.obj = object1 
    } 

} 
+1

非常感谢您的帮助! – paul590