Swift: lanzar cualquier objeto a Int64 = nil

tengo una pregunta. Me preguntaba por qué sucede esto.

var dict : [String : Any] = ["intValue": 1234, "stringValue" : "some text"]
dict["intValue"] as? Int64  // = nil (why)
dict["intValue"] as? Int    // = 1234

¿Alguien puede decirme por qué el elenco de Int64 devuelve nulo?

Parte editada:

He simplificado mi pregunta, pero creo que no fue una buena idea. :)

En mi caso especial, recuperaré un Diccionario de un cuerpo de mensaje de WKScriptMessage.

Sé que en un campo del Diccionario hay un valor Int que puede ser mayor que Int32.

Entonces, si lanzo este valor a Int, funcionará en sistemas de 64 bits. Pero, ¿qué pasó con los sistemas de 32 bits? Creo que aquí hay un desbordamiento de enteros o?

¿Debo marcar ambos para admitir ambos sistemas? Algo como esto:

func handleData(dict: [String : AnyObject]) {
  val value: Int64?
  if let int64Value = dict["intValue"] as? Int64 {
    value = int64Value
  } else if let intValue = dict["intValue"] as? Int {
    value = intValue
  }

  //do what ever i want with the value :)
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta