如何创建一个可以取类的值类型的空变量

问题描述 投票:5回答:2

嘿我想弄清楚如何将变量设置为空类的类型。如果这不是一个错误,请像这样:

码:

  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”in in side的字符串变量,那么稍后在我的视图中,load负责决定将该变量文本更改为“GoddBye”,它会让我这样做。但是,如果我尝试将“SelectedClass”变量更改为其他类,我会收到此错误。它说'不能分配saintsRB类型的值来键入saintsLB'代码:

      var PlayerEquipped = House()

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

Picture of Error

ios swift xcode
2个回答
8
投票

尝试使用

var PlayerEquipped: AnyObject

或其可选的等价物

var PlayerEquipped: AnyObject?

3
投票

根据您想要实现的目标,您有几个选择:

  1. 制定协议(例如Buildable)。让你所有的房子都实现它。将你的变量声明为Buildable(例如var house:Buildable? - 注意?,所以你不必初始化它,它可能是nil) - 这通常是我怎么做的,试图避免继承
  2. 上课(例如qazxsw poi)。你所有的房子(qazxsw poi,qazxsw poi等)都继承了House。将变量声明为House(例如House1

声明为House2House可能是有效的,但它会严重限制你,这可能不是你想要在这种情况下做的。

作为建议,在前进和编码之前尝试掌握这些基本原则。

© www.soinside.com 2019 - 2024. All rights reserved.