#xcode #swift5
#xcode #swift5
Вопрос:
Это последняя часть моего задания, я перепробовал все методы, которые мог придумать, но все еще не прошел через это.
Словари все еще не изучены, поэтому я думаю, что я просто не знаю синтаксиса, но поскольку я нашел способ решить эту проблему, то, полагаю, я не обманываю.
Из первого цикла я могу получить доступ ко всем данным gpa. Однако во втором цикле говорится, что двоичный оператор ‘>’ не может быть применен к ‘Любому’ операнду, поэтому, если есть какой-либо синтаксис для преобразования любого типа данных в Double, я думаю, что моя проблема решена.
var students : [[String:Any]] =
[[ "firstName": "John", "lastName": "Wilson", "gpa": 2.4 ], [
"firstName": "Nancy", "lastName": "Smith", "gpa": 3.5 ], [
"firstName": "Michael", "lastName": "Liu", "gpa": 3.1 ]]
var currentHighest : Any = 0.0
for person in students{
print(person["gpa"]!)
}
for person in students{
var grade:Any = person["gpa"]!
if(grade > currentHighest){
currentHighest = grade
}
}
print(currentHighest)
Ответ №1:
currentHighest
это не так Any
, это Double
поэтому объявите это как Double
, удалите аннотацию
var currentHighest = 0.0
И в цикле приведите значение к Double
for person in students {
let grade = person["gpa"] as! Double
if grade > currentHighest {
currentHighest = grade
}
}
Пользовательская структура все еще более эффективна
struct Person {
let firstName, lastName : String
let gpa : Double
}
let students = [Person(firstName: "John", lastName: "Wilson", gpa: 2.4),
Person(firstName: "Nancy", lastName: "Smith", gpa: 3.5),
Person(firstName: "Michael", lastName: "Liu", gpa: 3.1)]
let currentHighest = students.map{$0.gpa}.max()!
print(currentHighest)