arrays - Swift 中数组和结构的运行时错误

标签 arrays swift struct runtime-error

我是 Swift 新手,我遇到了一个愚蠢的错误!这是代码

import Foundation

struct Serie {
    var nomeEsercizio = ""
    var ripetizioni=0
    var chili=0.0
    var recupero=0
}

struct Superserie {
    var elementi: [Serie] = []
}

struct Scheda {
    var elementi: [Superserie] = []
}

class Schede {
    var elementi: [Scheda] = []
    func isEmpty() -> Bool {
        return elementi.isEmpty
    }
}

class GestoreDiSchede {
    static var schedeLocali = Schede()
    static var username = "empty"

class func initializeUserDefaults () {
        var superserieTemp = Superserie()
        var scheda = Scheda()
        let schede = Schede()

        superserieTemp.elementi.append(Serie(nomeEsercizio: "Spinte manubri", ripetizioni: 10, chili: 10, recupero: 0))     //....more code

我无法发布调试器的屏幕截图,但这里结构“superserieTemp”内变量“elementi”的项目值是随机分配的!!!!为什么? 我已经尝试了所有方法,但无法使代码正常工作,请帮助:(

编辑<------------ 几个小时后,我发现发生错误是因为我无法正确初始化结构数组的结构。我该怎么做? 如果我执行以下操作,那么当我尝试在更大的结构内的数组中附加一个项目时,我会收到此错误“变量‘a’在开始初始化之前通过引用传递”。 “a”变量引用下面的代码。

struct Inside {
    var something: String
    var somethingElse: Int
}
struct Outside {
    var array: [Inside]
    init(){
        self.array = []
    }
}
//then the error is given in the following lines (which are placed inside a method of another class)
var a: Outside
a.array.append.(Inside("aaaa",1111))

问题出在哪里?

编辑编辑<----------- 这是正确的(未编译)代码,我直接在堆栈溢出中编写了前一个代码

struct Inside {
    var something: String
    var somethingElse: Int
}
struct Outside {
    var array: [Inside]
    init(){
        self.array = []
    }
}
//then the error is given in the following lines (which are placed inside a method of another class)
        var a: Outside
        a.array.append(Inside(something: "aaaa",somethingElse: 1111))

最佳答案

在您的示例代码中,您没有初始化变量a,但在 Swift 中,每个值都必须在可用之前进行初始化。将最后两行更改为:

var a = Outside()
a.array.append(Inside(something: "aaaa", somethingElse: 1111))

它对我来说很好用(Swift 2.0)

或者您可以删除阻止生成默认初始值设定项的自定义初始值设定项,然后它看起来像这样:

struct Inside {
    var something: String
    var somethingElse: Int
}

struct Outside {
    var array: [Inside]
}

let a = Outside(array: [Inside(something: "aaaa", somethingElse: 1111)])

关于arrays - Swift 中数组和结构的运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31686153/

相关文章:

javascript - Angular JS 重复无序列表中的 2 个数组

Java:从多个数组中的重复项获取平均时间

swift - XCUITest Multiple matches found 错误

c# - struct c#中的安全固定大小数组

json - 如果具有相同的对象,则在 Golang 中初始化嵌套结构定义

c - c语言调用函数什么时候加 '&'什么时候不加?

javascript - 创建数组的 javascript 对象字面量

javascript - 循环遍历数组对象

swift - 为什么 JSON 序列化省略了 JSON 字符串中的正斜杠?

ios - 如何在 iOS 应用程序处于前台时在后台运行操作