Как преобразовать данные любого типа в Double

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