Я хотел бы преобразовать intк NSStringв Objective C.
Как я могу это сделать?
Ответы:
Примитивы можно преобразовать в объекты с помощью @()выражения. Таким образом, кратчайший путь , чтобы преобразовать intв NSNumberи подобрать строковое представление с stringValueметодом:
NSString *strValue = [@(myInt) stringValue];
или
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)ошибку - это просто демонстрация того, что IMO descriptionпредпочтительнее stringValue(я могу ошибаться, не программировал в ObjC годами)
NSString *string = [NSString stringWithFormat:@"%d", theinteger];
@(myInt)это упакованное выражение , оно возвращает NSNumber.
Если эта строка предназначена для представления конечному пользователю, вы должны использовать NSNumberFormatter. Это добавит разделители тысяч и учтет настройки локализации для пользователя:
NSInteger n = 10000;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:@(n)];
В США, например, это создаст строку 10,000, но в Германии это будет 10.000.
NSString *strValue = @(myInt).stringValue;