DateFormatter date from string devuelve nil

Por alguna razón, algunos dispositivos no pueden convertir una cadena en una fecha.

Este es mi código de conversión de fecha:

func dateFromString(string: String) -> Date? {
    let f = DateFormatter.init()
    f.dateFormat = "yyyy-MM-dd HH:mm:ss"
    return f.date(from: string)
}

Ahora, a través de mi plataforma de análisis, capturo cuando este regreso es nulo. No tengo idea de por qué. Supongo que tiene algo que ver con la configuración local y quizás de la zona horaria o 12 / 24h, pero no puedo entender cuál es el problema.

Más detalles...

He seguido la siguiente configuración que causa un retorno nulo:

zona horaria - Asia / Muscat

local - es_ES

cadena - "2016-12-18 08:31:43"

Pero cuando ejecuto esto en el patio de recreo obtengo una fecha válida:

let f = DateFormatter.init()
f.dateFormat = "yyyy-MM-dd HH:mm:ss"
f.locale = Locale.init(identifier: "en_GB")
f.timeZone = TimeZone.init(identifier: "Asia/Muscat")

let s = f.date(from: "2016-12-18 08:31:43")

"18 de diciembre de 2016, 6:31 a.m."

¿Qué causa que DateFromatter regrese nulo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta