Создание массива на основе экземпляров класса | SWIFT
Возник вопрос . У меня есть класс, на основе этого класса я создаю 4 экземпляра, после чего создаю массив стоящий из этих экземпляров. Но при попытке вывода этого массива на консоль появляются непонятные надписи( я понимаю что это отображение элементов массивами, но не понимаю почему так происходит). В консоль выводится это: [__lldb_expr_59.Student, __lldb_expr_59.Student, __lldb_expr_59.Student, __lldb_expr_59.Student]
class Student {
var name : String
var surname : String
var yearOfBorn : Int
var mark : Double
init(name: String, surname : String, yearOfBorn : Int, mark : Double) {
self.name = name
self.surname = surname
self.yearOfBorn = yearOfBorn
self.mark = mark
}
func printAllPrefs()->String{
return "My name is \(name), my surname is \(surname), I was born in \(yearOfBorn) and I have mark \(mark)"
}
}
var newStudent = Student(name: "Vladimir", surname: "Malin", yearOfBorn: 1999, mark: 4.5)
var newStudent1 = Student(name: "Lidia", surname: "Filimonova", yearOfBorn: 1999, mark: 2.7)
var newStudent2 = Student(name: "Alex", surname: "Magis", yearOfBorn: 1998, mark: 3.5)
var newStudent3 = Student(name: "Petr", surname: "Row", yearOfBorn: 2000, mark: 5.0)
var newArray = [Student]()
newArray.append(newStudent)
newArray.append(newStudent1)
newArray.append(newStudent2)
newArray.append(newStudent3)
newArray
let sortedNewArray = newArray.sorted {$0.mark > $1.mark }
sortedNewArray
print(sortedNewArray)~~~
[1]: https://i.stack.imgur.com/L98mr.jpg
Ответы (1 шт):
К сожалению, не всё выводится в консоль в читабельном виде. Некоторые данные вообще бывают в виде пустого места (если не ошибаюсь, например, кодировка строки). Так что выводите через цикл поэлементно, с помощью вашего встроенного метода:
for person in sortedNewArray {
print(person.printAllPrefs())
}
или, например, с помощью цикла и точечного синтаксиса
for item in sortedNewArray {
print(item.mark, item.name, item.surname, item.yearOfBorn)
}
или тоже самое через map и ваш встроенный метод
sortedNewArray.map{print($0.printAllPrefs())}
или map и точечный синтаксис :)
sortedNewArray.map{print($0.mark, $0.name, $0.surname, $0.yearOfBorn)}