[英]Runtime error with array and struct with swift
我是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”的各項的值隨機分配了!!!! 為什么? 我已經嘗試了所有方法,但是我無法使代碼正常工作,請幫助:(
編輯<-----------幾個小時后,我發現錯誤發生是因為我無法正確初始化struct數組的結構。 我該怎么做? 如果我按照以下方式進行操作,那么當我嘗試在更大的結構體內部的數組中追加一個項目時,會出現此錯誤“變量“ 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))
問題出在哪里?
EDIT EDIT <-----------這是正確的(不編譯)代碼,我已經在堆棧溢出中直接編寫了前一個代碼
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)])
您的代碼有一些錯誤:(1) a
未初始化。 您剛剛聲明它為Outside
類型。 (2)追加后有一個額外的點。 (3)您需要帶有Inside
的默認初始化程序的參數標簽。
struct Inside {
var something: String
var somethingElse: Int
}
struct Outside {
var array = [Inside]() // Don't need to initialize array in your init call
}
var a = Outside()
a.array.append(Inside(something: "aaaa",somethingElse: 1111))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.