2009-08-04 18 views
5

Tengo un NSSlider que intenta convertir un flotador normal en un CGFloat. El código que estoy usando:floatValue para CGFloat

CGFloat testing = [mainSlider floatValue]; 

Sin embargo, esto simplemente hace que la variable de prueba "0.00" cuando intento entrar ella.

NSLog(@"%f", testing); 

¿Alguien tiene alguna idea de por qué esto sucedería? Gracias por cualquier ayuda.

Respuesta

10
  1. cheque que mainSlider no nula
  2. probar esto por si acaso es (no recuerdo si CGFloat es un doble o no) :

    NSLog (@ "% f", (doble) prueba);

  3. Compruebe que la variable no está siendo ensombrecida así:

    CGFloat testing = 0.0; 
    if(YES){ 
        CGFloat testing = [mainSlider floatValue]; 
        //should be: testing = [mainSlider floatValue]; 
    } 
    NSLog(@"testing = %f", testing); //this will print "testing = 0.000000" 
    
+2

Tenga en cuenta que la fundición a 'double' no restaurará precisión pierde cuando' floatValue' convierte el valor de precisión simple . Mejor solo usar 'doubleValue'. –

+1

Además, el lanzamiento a (doble) es innecesario. El lenguaje c lo hace implícitamente cuando se llama a una función vargs con un argumento float. –

+0

mainSlider no es nada, solo por alguna extraña razón, no se transfiere a un CGFloat. Cuando lo registro como: NSLog (@ "% f", [mainSlider floatValue]), devuelve el resultado. Pero no cuando creo un CGFloat a partir de él. – PF1

Cuestiones relacionadas