Zgodnie z dokumentacją Swift 3, NSNumber jest zmostkowany do rodzimych typów Swift, takich jak Int, Float, Double, ... Ale kiedy próbuję używać natywnego typu w Słowniku, dostaję błędy kompilacji zostać naprawione przy użyciu NSNumber, dlaczego tak jest? Oto mój kod:NSNumber vs Int, Float w Swift Dictionary
var dictionary:[String : AnyObject] = [:]
dictionary["key"] = Float(1000)
, a kompilator podaje błąd "Nie można przypisać wartości typu Float do AnyObject". Jeśli napiszę kod w następujący sposób, nie ma problemów, ponieważ NSNumber jest w rzeczywistości typem obiektu.
dictionary["key"] = NSNumber(value:Float(1000))
Swift kompilator skłania również do skorygowania kodu jako
dictionary["key"] = Float(1000) as AnyObject
ale nie jestem pewien, czy to jest poprawne rzeczą do zrobienia, czy nie. Jeśli rzeczywiście istnieje pomost między NSNumber a rodzimymi typami (Int, Float itp.), Dlaczego kompilator wymusza typografię AnyObject?
pokrewne: http://stackoverflow.com/questions/39321421/working-with-nsnumber-integer-values-in-swift- 3 –