Pregunta

Soy nuevo en el desarrollo de Objective-C y iPhone, y estoy tratando de almacenar valores de punto flotante en un NSMutableArray, pero cuando lo hago, aparece un error que dice " tipo incompatible para el argumento 1 de 'addObject " ;. ¿Qué estoy haciendo mal? Estoy tratando de crear una matriz de dobles con los que pueda realizar cálculos matemáticos.

¿Fue útil?

Solución

NSMutableArray solo contiene objetos, por lo que desea que una matriz se cargue con objetos NSNumber. Cree cada NSNumber para mantener su doble y luego agréguelo a su matriz. Quizás algo como esto.

NSMutableArray *array = [[NSMutableArray alloc] init];
NSNumber *num = [NSNumber numberWithFloat:10.0f];
[array addObject:num];

Repita según sea necesario.

Otros consejos

Use un NSNumber para ajustar su flotante, porque el diccionario necesita un objeto:

[myDictionary setObject:[NSNumber numberWithFloat:0.2f] forKey:@"theFloat"];
/* or */
[myDictionary setObject:@0.2f forKey:@"theFloat"];

recuperarlo enviando floatValue:

float theFloat = [[myDictionary objectForKey:@"theFloat"] floatValue];

El código no se ha probado.

También puede incluir muchos otros tipos de datos en NSNumber, consulte el documentación . También hay NSValue para algunas estructuras como NSPoint y NSRect.

En Cocoa, NSMutableDictionary (y todas las colecciones, realmente) requieren objetos como valores, por lo que no puede simplemente pasar ningún otro tipo de datos. Como sugirieron sjmulder y Ryan, puede ajustar sus valores escalares en instancias de NSNumber (para número) y NSValue para otros objetos.

Si representa un número decimal, por algo como un precio, sugeriría también mirar y usar NSDecimalNumber . A continuación, puede evitar problemas de imprecisión de coma flotante y, en general, puede usar y almacenar el & Quot; value & Quot; como una NSDecimalNumber en lugar de representarlo con un código primitivo.

Por ejemplo:

// somewhere
NSDecimalNumber* price = [[NSDecimalNumber decimalNumberWithString:@"3.50"] retain];
NSMutableArray*  prices= [[NSMutableArray array] retain];

// ...

[prices addObject:price];
NSMutableArray *muArray = [[NSMutableArray alloc] init];
NSNumber *float = [NSNumber numberWithFloat:210.0f];
NSNumber *float1 = [NSNumber numberWithFloat:211.0f];
[muArray addObject:float];
[muArray addObject:float1];

NSlog(@"my array is--%@",muArray);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top