Compruebe si la cadena es un valor doble válido en Swift

En Swift, ¿cómo se puede verificar si una cadena es un valor doble válido? He estado usando la siguiente extensión deesta pregunta (pero como flotante) pero si el valor no se puede convertir, simplemente devuelve "0":

extension String {
    var doubleValue:Double? {
        return (self as NSString).doubleValue
    }
}

Idealmente, me gustaría que volvieranil para que pueda quedar atrapado en unif-let, al igual que:

if let i = str.doubleValue {
    object.price = i
} else {
    // Tell user the value is invalid
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta