【问题标题】:How to create a empty variable that can take the value type of a class如何创建一个可以取类的值类型的空变量
【发布时间】:2016-09-04 11:12:58
【问题描述】:

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

代码:

  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”变量更改为不同的类,我会收到此错误。它说'不能将类型 saintsRB 的值分配给类型 saintsLB' 代码:

      var PlayerEquipped = House()

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

【问题讨论】:

  • 我想你正在寻找AnyObjectAny
  • 我收到一条错误消息,提示“无法构造 AnyObject”,因为它没有可访问的初始化程序。当我这样做时 var PlayerEquipped = AnyObject() @Yogesh Suthar
  • 你需要这样使用var PlayerEquipped: AnyObject?
  • 好的,谢谢!!!它有效@Yogesh Suthar
  • 最好定义一个通用的超类。

标签: ios swift xcode


【解决方案1】:

尝试使用

var PlayerEquipped: AnyObject

或其可选等效项

var PlayerEquipped: AnyObject?

【讨论】:

    【解决方案2】:

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

    1. 制定协议(例如Buildable)。让你所有的房子都实施它。将你的变量声明为 Buildable(例如 var house:Buildable? - 注意 ?,所以你不必初始化它,它可能是 nil) - 这通常是我会这样做,试图避免继承

    2. 创建一个类(例如House)。让你所有的房子(House1House2 等)继承 House。将变量声明为 House(例如 var house:House?

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

    作为建议,在继续编写代码之前,请尝试掌握这些基本原则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多