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

関連する問題