Une Date doit respecter StringProtocol?

Xcode me colle une erreur que je ne comprends pas. voici le code :

Cette fonction est dans une classe de mon cru, dont l’initialiseur repose sur des Date, pas leur description ni rien qui soit conforme à StringProtocol…
il s’agit de Xcode 14.1 sur Ventura 13.0

C’est moi ou est-ce un bug de Xcode ?

C’est moi, comme d’hab. Voici le code correct :
func getData() → (Date, Date){
let lastv: Date
let nextv: Date
let ld: Double? = w_UserDefaults?.double(forKey: « lastDate »)
let nd: Double? = w_UserDefaults?.double(forKey: « nextDate »)
if ld != nil {lastv = Date(timeIntervalSinceReferenceDate: ld!)} else {lastv = Date(timeIntervalSinceReferenceDate: 0.0)}
if nd != nil {nextv = Date(timeIntervalSinceReferenceDate: nd!)} else {nextv = Date(timeIntervalSinceReferenceDate: 0.0)}
return(lastv, nextv)
}

Il ne faut jamais s’acharner à coder quand on est fatigué, qu’il est tard, qu’on devrait aller se coucher, alors que tout est si simple une fois reposé.
Et j’ajouterai : c’est fou les c…ies qu’on peut faire dire à Xcode avec du mauvais code.

Effectivement, le constructeur par défaut de Double ne sait pas convertir une date mais par contre peut essayer de convertir une chaîne de caractère c’est pour ça qu’il refusait ton Double(Date()) mais il aurait probablement accepté un Double("20.5") par exemple

Le problème était que UserDefaults enregistre des Date, probablement comme des TimeInterval, mais ne restitue que des Double…
Merci. C’est parfois ésotérique, il y a des arcanes dans les langages, parfois.