2016-11-15 2 views
0

Ich arbeite mit Xcode und Swift 3.mehrdeutigen Verweis auf eine einfache Berechnung

ich die folgende Zeile haben:

let x = playableRect.minX + (hexagon.size.width/2) + (i % 4) * hexagon.size.width 

, die den Fehler zurückgibt Ambiguous reference to member '/'

Ich weiß nicht wirklich wissen, warum es fehlschlägt, wenn

let x = playableRect.minX + (hexagon.size.width * 2) + (i % 4) * hexagon.size.width 

Werke und

let x = playableRect.minX + (hexagon.size.width/2) + i * hexagon.size.width 

funktioniert auch. Der Fehler tritt auf, wenn ich / und % in derselben Berechnung kombiniere. Haben Sie eine Idee warum?

+2

Was ist die Art von 'i'? Es könnte nur ein seltsamer Fehler sein, wenn Sie nicht übereinstimmende Typen verwenden. –

+0

Ich verwende i in einer 'for' Schleife, also ist es eine Ganzzahl, während die anderen Werte' CGFloat' sind. Ich werde versuchen, in CGFloat zu werfen. Okay, ich musste 'CGFloat (i% 4)' eingeben. Ich verstehe den Fehler immer noch nicht, aber danke – Drakalex

Antwort

1

Da i ist ein Int, und alles andere ist ein CGFloat es weiß nicht, wie diese verschiedenen Typen zu behandeln. Sie müssen es ändern, so ist alles ein CGFloat.

let x = playableRect.minX + (hexagon.size.width/2) + CGFloat(i % 4) * hexagon.size.width 

Auf einer Seite zur Kenntnis, die Fehlermeldung bekam ist seltsam. Es muss etwas anderes in Ihrem Code passieren, das verursacht, dass es Ihnen eine irgendwie nutzlose Fehlermeldung gibt. Ich habe den gleichen Code auf einen Spielplatz gelegt und habe den folgenden Fehler bekommen, der viel hilfreicher ist.

error: binary operator '*' cannot be applied to operands of type 'Int' and 'CGFloat' 
x + (w/2) + (i % 4) * w 
       ~~~~~~~^~ 
Verwandte Themen