2017-07-02 155 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