2014-06-05 20 views
9

Przekonwertowałem String na Int przy użyciu toInt(). Następnie próbowałem pomnożenie jej przez 0,01, ale pojawia się błąd, który mówi Could not find an overload for '*' that accepts the supplied argument. Oto mój kod:Nie można znaleźć przeciążenia dla "*", który akceptuje podany argument

var str: Int = 0 
var pennyCount = 0.00 

str = pennyTextField.text.toInt()! 
pennyCount = str * 0.01 

Od przeczytaniu innych stanowisk wydaje się, że odpowiedź ma do czynienia z typem. Na przykład, jeśli typ jest ustawiony jako liczba całkowita, otrzymuje podobny błąd. Próbowałem zmienić typ na Int, ale to nie rozwiązuje problemu.

Próbowałem również ustawienie typu dla „str” i „” jak pennyCount Floats i Doubles i wszystkich kombinacji Floats, Doubles i Ints. Domyślam się, że problem polega na konwersji funkcji toInt() na funkcję String na Integer.

Czy ktoś mógłby pomóc ci wyjaśnić, na czym polega problem?

Odpowiedz

13

Swift wydaje się dość wybredny w zakresie domyślnego rzutowania typu, więc w twoim przykładzie mnożysz str (Integer) o 0,01 (Double), więc aby rozwiązać problem, musisz go rzucić w ten sposób:

var str: Int = 0 
var pennyCount = 0.00 
str = pennyTextField.text.toInt()! 
pennyCount = Double(str) * 0.01 
Powiązane problemy