【问题标题】:Class Array Error - "Expressions are not allowed at the top level"类数组错误 - “顶级不允许表达式”
【发布时间】:2019-01-06 08:08:45
【问题描述】:

我对 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 放在类视图控制器中,但这只会引发更多错误。我试过查看类似的问题,但没有一个能直接帮助解决我的问题。

【问题讨论】:

  • 我在我的viewController中试过了,它可以工作,你能把viewController的整个代码放上去吗?那我可以告诉你吗?

标签: arrays swift variables


【解决方案1】:

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)
    }
}

【讨论】:

    【解决方案2】:

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

    用你的代码的第二部分做这样的事情

    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)
        }
    

    这不是一个非常有用的课程,但您需要做的快速示例

    【讨论】:

      猜你喜欢
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多