4thSpace
4thSpace

Reputation: 44310

Converting NSDecimalNumber to NSString

I'm retrieving a key from an object that looks like this:

po obj
{
  TypeID = 3;
  TypeName = Asset;
}

The key value is being retrieved like this:

NSString *typeId = (NSString*)[obj objectForKey:@"TypeID"];

Rather than typeId being an NSString, it is an NSDecimalNumber. Why is that?

How do I convert it to an NSString?

Upvotes: 16

Views: 22702

Answers (5)

blwinters
blwinters

Reputation: 2191

Since this is the top search result and I don't see a question for NSDecimalNumber to String in Swift, here it is. This will show the localized decimal separator and all decimal places with a non-zero value.

let string = decimalNumber.description(withLocale: Locale.current)

Upvotes: 1

taus-iDeveloper
taus-iDeveloper

Reputation: 701

Use this to convert NSDecimalNumber to NSString:

NSDecimalNumber* dec1;
NSString* str;

str = dec1.stringValue;

Use this to convert NSString to NSDecimalNumber:

NSString* string1 = @"Stack overflow 123";
NSDecimalNumber* dec;

dec = (NSDecimalNumber *)string1;

Upvotes: -1

Cao Huu Loc
Cao Huu Loc

Reputation: 1589

If you want to get string value, just use "description". It works fine even if returned type is NSDecimalNumber, or NSString, or whatever:

NSString *typeId = [[obj objectForKey:@"TypeID"] description];

Upvotes: 1

Michael
Michael

Reputation: 3608

This should work:

NSString *typeId = [[obj objectForKey:@"TypeID"] stringValue];

Upvotes: 4

Jeff B
Jeff B

Reputation: 30099

You need to use the stringWithFormat function:

NSString *typeId = [NSString stringWithFormat:@"%@", [obj objectForKey:@"TypeID"]];

or stringValue:

NSString *typeId = [[obj objectForKey:@"TypeID"] stringValue];

Upvotes: 32

Related Questions