【问题标题】:How to add to an array of objects, an object that is inherited? (Swift, XCode)如何向对象数组添加一个被继承的对象? (斯威夫特,XCode)
【发布时间】:2015-11-06 05:32:31
【问题描述】:
var allCards = [CCard]
var cardsMade = 0

^^ 在我的视图控制器类之外,以使其在所有其他视图控制器文件中都是全局且可访问的。

在我拥有的另一个视图控制器中

@IBAction func saveInfo(sender: UIButton) {
    let a = CCreature(n: cName!, e: cExpansion, ec: cEnergy!, tc: cTurnCount!,
        ef: cEffect!, at: cStrength!, ht:cHealth!, sp: cSpeed!, sb: false)
    allCards.append(a)
    cardsMade++}

所以当按下 saveInfo 按钮时,我将用户输入的所有信息(在 UITextFields 中,然后保存到相应的 vairables cEnergy 等中)放入一个名为 CCreature 的 CCard 子类中,其中包含所有信息。创建类的实例后,我试图将其存储在数组 allCards 中。我收到一条错误消息:

var allCards = [CCard]

类型名称后的预期成员名称或构造函数调用

在将 a 附加到数组的行中,我收到此错误:

无法将“CCreature”类型的值转换为预期的参数类型“inout Array ”

我之前在编译程序时也收到此错误消息:

致命错误:数组索引超出范围

有什么想法吗?

【问题讨论】:

    标签: arrays xcode swift inheritance constructor


    【解决方案1】:

    正如你所拥有的 [CCard] 是一个类型声明,你可以将它用作:

    var allCards : [CCard]
    

    但是,这实际上不会将 allCards 初始化为有用,或者,您可以实际创建数组并使用以下方法对其进行初始化:

    var allCards = [CCard]()
    

    你在哪里使用默认数组构造函数

    这不是您的示例的全部内容,因为您没有包含很多部分,而是精简以显示用法,将是:

    var allCards = [CCard]()
    
    func saveInfo() {
        let a = CCreature()
        allCards.append(a)
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2019-04-07
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      相关资源
      最近更新 更多