2016-09-04 7 views
4

ちょっと、変数を空のクラスの型に設定する方法を考えようとしています。クラスの値の型を取ることができる空の変数を作成する方法

コード:

var PlayerEquipped = class() // failed attempt at trying set up a blank variable that can take the type of a class 

または私は将来的に変更することができます変数を作成し、それは誤りでなかった場合には、このように。ですから、基本的に私は問題なくこのクラスに割り当てられたクラスでこのようなグローバル変数を作成することができます。

コード:

var PlayerEquipped = House() 

      //In another .swift file i have the 2 classes 

    class House { 
    init() { 
    } 
    } 

    class House2 { 
    init() { 
    } 
    } 

しかし、たとえとそのセットアップ「VAR」私は別のクラスにその「SelectClass」変数を変更しようとすると、私はまだエラーを取得します。例えば、テキスト "Hello"を含む文字列変数をインラインで作成する場合、後で私のビューでロードした変数テキストを "GoddBye"に変更して、それを行えるようにします。しかし、 "SelectedClass"変数を別のクラスに変更しようとすると、このエラーが発生します。それは言って コード 'saintsLB入力するタイプのsaintsRBの値を代入することはできません' を:

 var PlayerEquipped = House() 

    //down in view didload: 
     PlayerEquipped = House2() // Error here 

Picture of Error

+1

私はあなたが 'AnyObject'と' Any'を探していると思います。 –

+0

私はvarをPlayerEquipped = AnyObject()@ Yogesh Suthar – Hunter

+0

のように使用する必要があります。このようなvar PlayerEquipped:AnyObject? '。 –

答えて

5

var PlayerEquipped: AnyObject 

またはその任意の同等のものを使用してみてください

var PlayerEquipped: AnyObject? 
2

あなたが持っていますあなたが達成したいものに応じていくつかのオプションがあります:

  1. プロトコル(例: Buildable)。あなたのすべての家にそれを実装させてください。ビルド可能なよう、あなたの変数を宣言します(例:var house:Buildable? - あなたはそれを初期化する必要はありませんので、それがnil可能性があり、?に注意してください) - これは、クラスを作る継承

  2. を避けるためにしようと、私はそれを行うだろうか通常であります(例えば、House)。あなたのすべての家(House1House2など)は、Houseの形式を継承してください。ハウスとしてのあなたの変数を宣言します(例えばvar house:House?

AnyまたはAnyObjectとして宣言することは有効であるかもしれないが、それは大きく、あなたが制限され、それはあなたがこのような状況で何をしたいのか、おそらくではありません。

アドバイスとして、先に進む前にこれらの基本原則を理解してください。

関連する問題