Swift: Beliebiges Objekt in Int64 = nil @ umwande

Ich habe eine Frage. Ich habe mich gefragt, warum das passiert ist?

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

kann mir jemand sagen, warum die Besetzung von Int64 nil zurückgibt?

Bearbeiteter Teil:

Ich habe meine Frage vereinfacht, aber ich denke, das war keine gute Idee. :)

In meinem speziellen Fall erhalte ich ein Wörterbuch aus einem Nachrichtentext von WKScriptMessage zurück.

ch weiß, dass es in einem Feld des Dictionary einen Int-Wert gibt, der größer als Int32 sein kan

Wenn ich diesen Wert auf Int umsetze, funktioniert er auf 64-Bit-Systemen. Aber was ist auf 32-Bit-Systemen passiert? Ich denke hier ist ein Integer-Überlauf oder?

Muss ich beide prüfen, um beide Systeme zu unterstützen? Etwas wie das

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 :)
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage