繁体   English   中英

类数组错误-“不允许在顶级表达”

[英]Class Array Error - “Expressions are not allowed at the top level”

我对Swift编码还很陌生,所以如果可以解决此错误,请原谅!

我已经在Xcode中使用swift创建了一个数据模型,并创建了一个变量数组以获取学生的详细信息和属性。 这段代码可以在快速的操场上正常运行,但是没有错误,但是当我在项目中使用它时,在变量行中出现“在顶层不允许表达”错误。 类和对象如下:

class StudentDetail {

//Create Student Properties
var n: String?
var s: String?
var g: String?

//Initialise Properties
init(name: String, subject: String, grade: String) {
    self.n = name
    self.s = subject
    self.g = grade
}
}


let user1Detail = StudentDetail(name: "Koester", subject: "Science", grade: "9A")
let user2Detail = StudentDetail(name: "Tilly", subject: "Math", grade: "9A")

let people = [user1Detail, user2Detail]

//Variable Array
var arr = [StudentDetail]()
arr.append(user1Detail)
arr.append(user2Detail)

我试图将变量arr放在类视图控制器中,但这只会触发更多错误。 我尝试查看类似的问题,但是没有一个问题可以直接解决我的问题。

您必须拥有所有在类或结构中声明和使用属性的代码

用代码的第二部分做类似的事情

class Test {

    let user1Detail = StudentDetail(name: "Koester", subject: "Science", grade: "9A")
    let user2Detail = StudentDetail(name: "Tilly", subject: "Math", grade: "9A")

    let people = [user1Detail, user2Detail]
    func doStuff() {
       //Variable Array
        var arr = [StudentDetail]()
        arr.append(user1Detail)
        arr.append(user2Detail)
    }

这不是一个非常有用的课程,而是有关您需要做什么的简单示例

诸如arr.append(user1Detail)类的语句只能放在闭包中(包括方法,函数,初始化程序等)。 声明可以放在一个类中,也可以放在全局级别。

您的文件如下所示:

class StudentDetail {

    //Create Student Properties
    var n: String?
    var s: String?
    var g: String?

    //Initialise Properties
    init(name: String, subject: String, grade: String) {
        self.n = name
        self.s = subject
        self.g = grade
    }

}

class ViewController: UIViewController {
    let user1Detail = StudentDetail(name: "Koester", subject: "Science", grade: "9A")
    let user2Detail = StudentDetail(name: "Tilly", subject: "Math", grade: "9A")

    let people = [user1Detail, user2Detail]
    var arr = [StudentDetail]()

    override func viewDidLoad() {
       arr.append(user1Detail) // now this is in a method
       arr.append(user2Detail)
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM