#arrays #swift #struct
#массивы #swift #структура
Вопрос:
Я получаю ошибку, указанную в названии моего вопроса, и я не знаю, почему или как ее устранить? Начинающий любитель Swift здесь, поэтому, пожалуйста, объясните в понятных терминах. Большое вам спасибо.
struct Student {
let firstName: String
let lastName: String
let grade: String
}
struct Classroom {
let nameOfClass: String
let students: [Student] = []
}
let student1 = Student(firstName: "Keith", lastName: "Grimes", grade: "F")
let class1 = Classroom(nameOfClass: "Swift", students: student1)
Моя конечная цель — заполнить массив студентов типа Student, что само по себе сбивает меня с толку, но я просто пытаюсь преодолеть это первое препятствие.
Ответ №1:
Вам нужно избавиться от = []
struct Classroom {
let nameOfClass: String
let students: [Student]
}
let student1 = Student(firstName: "Keith", lastName: "Grimes", grade: "F")
let class1 = Classroom(nameOfClass: "Swift", students: [student1])
Обсуждение:
Когда вы добавляете значение по умолчанию для свойства внутри своей структуры, оно не учитывает его в своем автоматическом init
методе, плюс вы объявляете students
как массив и отправляете один объект типа Student
, поэтому оберните его внутрь []
, если вам нужно иметь оба, вы можете добавить еще один init, как показано ниже
struct Classroom {
var nameOfClass: String
var students: [Student] = []
init(nameOfClass:String,students:[Student] = []) {
self.nameOfClass = nameOfClass
self.students = students
}
}
Ответ №2:
students — это массив Student, он же [Student], поэтому вам нужно передать [student1] или изменить let students на Student