Spanky
Spanky

Reputation: 5000

Cast an Objective C UITextField value to float

I have a UITextField called txtDiscount It has a value in it: txtDiscount.text == 2.3 //for example

I've tried:

float test = (NSNumber *)txtDiscount.text;

And it compiles, but at runtime breaks down.

Unacceptable type of value for attribute: property = ..."; desired type = NSNumber; given type = NSCFString; value = .

How can I cast the value?

Any help greatly appreciated, Thanks // :)

Upvotes: 2

Views: 3098

Answers (2)

unknown
unknown

Reputation:

A cast like this

(NSNumber *)myInstance

is telling the compiler to treat 'myInstance' as if it were an instance of class NSNumber. This may influence compile time warnings and errors. Note: - the compiler. It makes no difference to the code that is generated or run - at all. The code that you are running is still

float test = [txtDiscount text];

where the method -text is returning a pointer to an NSString and you are trying to assign it to a float variable.

see clee's answer for how to get float value from an NSString - but make sure you understand why what you were trying to do is wrong. It will help loads in the long run.

Upvotes: 2

clee
clee

Reputation: 11118

You probably want something like:

float test = [txtDiscount.text floatValue];

The NSString documentation provides a list of all the built-in casts.

Upvotes: 4

Related Questions