2012-07-07 21 views
19

Me falta algo básico, aquí. Debe haberlo olvidado. Pero, básicamente, tengo el siguiente código: el propósito es tomar un NSNumber, convertirlo a float, multiplicarlo por 2 y devolver el resultado a un NSNumber. Recibo un error en el último paso, y estoy perplejo. Qué debo hacer ahí.Convertir float a NSNumber

NSNumber *testNSNumber = [[[NSNumber alloc] initWithFloat:200.0f] autorelease]; 
float myfloatvalue = [testNSNumber floatValue] * -2; 
NSLog(@" Test float value %1.2f \n\n",myfloatvalue); 
[testNSNumber floatValue:myfloatvalue]; // error here is floatValue is not found 

Respuesta

43

El método de floatValueNSNumber no toma parámetros. Si desea establecer un nuevo número de flotación, es necesario volver a asignar testNSNumber, porque NSNumber no tiene una contraparte mutable:

testNSNumber = @(myfloatvalue); // The new syntax 

o

versión
testNSNumber = [NSNumber numberWithFloat: myfloatvalue]; // The old syntax 
+1

¿por qué no usar @ (myfloatvalue)? –

+0

@ JulianKról ¡Gracias! Esta respuesta se ha escrito más de un año antes de que se introdujera la sintaxis '@ (...)'. Lo actualicé para reflejar la nueva sintaxis. – dasblinkenlight

+0

mucho mejor ahora :) Sé que es un problema mantener las respuestas publicadas de forma personal, pero como comunidad podemos lograrlo. –

0

Swift 2.0:

let testNSNumber: NSNumber = NSNumber(float: myfloatvalue) 
13

Swift 3.0:

let testNSNumber: NSNumber = NSNumber(value: myfloatvalue) 
Cuestiones relacionadas