Ошибка массива класса - «Выражения недопустимы на верхнем уровне» - PullRequest
0 голосов
/ 06 января 2019

Я довольно новичок в программировании Swift, поэтому извините, если эту ошибку можно просто исправить!

Я создал модель данных, используя swift в XCode, и создал массив переменных, чтобы иметь детали и свойства учащегося. Этот код работает на быстрых игровых площадках без ошибок, но когда я использую его внутри проекта, я получаю ошибку «Выражения не допускаются на верхнем уровне» в строке переменной. Класс и объект следующие -

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 в контроллер представления классов, но это просто вызывает больше ошибок. Я пытался найти похожие вопросы, но ни один из них не помог мне решить проблему.

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Операторы типа 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)
    }
}
0 голосов
/ 06 января 2019

Вы должны иметь весь свой код, который объявляет и использует свойства внутри класса или структуры

Сделайте что-нибудь подобное со второй частью вашего кода

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

Не очень полезный класс, но быстрый пример того, что вам нужно сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...