2010-04-04 12 views
16

mam pobierania klucza z obiektu, który wygląda tak:Konwersja NSDecimalNumber do NSString

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

Wartość klucz jest pobierany tak:

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

Zamiast typeId bycia NSString , jest to NSDecimalNumber. Dlaczego?

Jak przekonwertować go na NSString?

Odpowiedz

29

Musisz użyć stringWithFormat funkcję:

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

lub stringValue:

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

To powinno działać:

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

Służy do konwersji NSDecimalNumber do NSString:

NSDecimalNumber* dec1; 
NSString* str; 

str = dec1.stringValue; 

Służy do konwersji NSString do NSDecimalNumber:

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

dec = (NSDecimalNumber *)string1; 
+2

Nie można po prostu rzucić 'NSString' do' NSDecimalNumber', są różne rodzaje i będziesz się zawiesić, jeśli spróbujesz użyć 'metody NSDecimalNumber' tego wskaźnika. – axiixc

1

Jeśli chcesz uzyskać wartość ciągu, wystarczy użyć "Opis". To działa dobrze, nawet jeśli typ zwracany jest NSDecimalNumber lub NSString, czy cokolwiek:

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

Ponieważ jest to top wynik wyszukiwania i nie widzę pytanie do NSDecimalNumber do String w Swift, tutaj jest. Spowoduje to wyświetlenie zlokalizowanego separatora dziesiętnego i wszystkich miejsc po przecinku z niezerową wartością.

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