Was etwas zu sein scheint, das ziemlich trivial sein sollte, hat mir ziemlich viele Probleme verursacht. Ich versuche, eine große Ganzzahl vom String in den Int-Typ zu konvertieren. Im Grunde genommen habe ich einen 64-Bit-Hash, der zu einem bestimmten Zeitpunkt als String übergeben wird, und ich muss ihn zurück in einen Int konvertieren.Konvertieren von großen Int von String
Laut aller Dokumentation, die ich finden konnte, in Swift der Int-Typ ist 64Bits. Calling, Int (str) sollte 64bit Conversions gut behandeln. Aber es scheint, dass es versucht, es in eine 32-Bit-Ganzzahl zu konvertieren, so dass ich einen Nullwert erhalte. Ich kann Int64() aus verschiedenen Gründen nicht verwenden (lange Rede kurzer Sinn muss der Schlüssel in meiner Hash-Tabelle vom Typ Int nicht Int64 sein). Hier
ist, was der Code wie folgt aussieht:
zu Beginn der Klasse erklärt:
var nameTable: Dictionary<Int, String> = [:]
erklärt später in irgendeiner Funktion:
let kv = data[i].componentsSeparatedByString(":")
self.nameTable[Int(kv[0])!] = kv[1]
Wo kv[0]="3928953869951869841"
und kv[1]="a"
das Stück Int(kv([0])!
schlägt fehl, weil ein Nil-Wert zurückgegeben wird, wenn es unerwartet war.
Int.max
gibt einen Wert von 2147483647, die 32-Bit-Max-Int, die mich als ungerade in Anbetracht aller Docs State Int als 64-Bit-Wert. Code wurde auf iPhones 5 - 6s mit dem gleichen Ergebnis ausgeführt.
Jede Hilfe würde sehr geschätzt werden. Vielen Dank!
es kein Konvertierungsproblem ist wahrscheinlich 'kv [0]' Wert Null –
ist Ich hatte gehofft, dass der Fall war, aber kv Ausdrucken [0] gab mir den Wert, den ich dort platziert – RaiderNation
können Sie tatsächlich teilen Wert? Ist es "" 3928953869951869841 "' –