Ich sammle Statistiken in ein Wörterbuch:Wie ändere ich eine 'Any' Variable, indem ich zuerst nach ihrem Typ suche?
var metrics = [String:Any]
Diese Metriken Ints sein können, Doubles, Streicher, so versuche ich, Alle zu verwenden.
ich initialisieren eine Metrik wie folgt aus:
metrics["sentBeacons"] = UInt(0)
Aber jetzt, wenn ich versuche, es zu ändern, der Compiler wirft einen Fehler:
metrics["sentBeacons"]! += 1 // Error: can't apply Int to Any?
die ich verstehe, kann es nicht wissen, dass Dieser Schlüssel hat eine Int.
Ich habe versucht:
if metrics["sentBeacons"] is UInt {
metrics["sentBeacons"]! += 1
}
aber keine Würfel. Ich habe auch versucht eine Schublade gesteckt:
if var sentBeacons = metrics["sentBeacons"] as? UInt {
sentBeacons += 1
}
Aber das funktioniert auch nicht, weil (glaube ich) das Wörterbuch ein Werttyp ist, und ich bin nur eine Kopie der Variablen zugreifen.
Wie kann ich den Compiler fragen: "Wenn 'Any' jetzt ein Int ist, dann füge '1' hinzu (an Ort und Stelle)"?
Verdammt, du hast mich um 30 Sekunden geschlagen! – Addison
Ich war auf beiden Seiten davon. :) –
So offensichtlich, im Nachhinein. Vielen Dank! – abreis