Я хотел бы преобразовать int
к NSString
в Objective C.
Как я могу это сделать?
objective-c
Йогини
источник
источник
NSString *strValue = @(myInt).stringValue;
stringValue
, но у всех естьdescription
- так что в качестве хорошей практики лучше привыкнуть к использованиюdescription
(NSNumber
есть, здесь не о чем беспокоиться). Попробуйте это (description
дата будет напечатана, ноstringValue
произойдет сбой):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
@(myInt)
- это упакованное выражение для,[NSNumber numberWithInt:]
и оно всегда будет возвращать NSNumber при задании int.[NSNumber stringValue]
всегда будет возвращать NSString. В коде вашего комментария принудительное приведение(id)
и присвоение другому типу является явной ошибкой программирования: вы никогда не должны этого делать. Это похоже на использование метода, а затем аргумент о том, что этот метод не выполняет то, что делал изначально.!
), и вы поймете, что делали это неправильно в Objective-C. Если объектtest
был создан не вами, то это не ваша ответственность. Вы можете попытаться вызватьisKindOfClass:
все полученные параметры, но даже это можно обмануть (например, передав структуру вместо NSObject). Так что не делайте этого: просто явно задокументируйте ожидаемые типы.(id)
ошибку - это просто демонстрация того, что IMOdescription
предпочтительнееstringValue
(я могу ошибаться, не программировал в ObjC годами)источник
@(myInt)
это упакованное выражение , оно возвращает NSNumber.Это один из многих способов.
источник
Если эта строка предназначена для представления конечному пользователю, вы должны использовать
NSNumberFormatter
. Это добавит разделители тысяч и учтет настройки локализации для пользователя:В США, например, это создаст строку
10,000
, но в Германии это будет10.000
.источник