Как конвертировать NSNumber в NSString - PullRequest
129 голосов
/ 19 октября 2010

Итак, у меня есть NSArray «myArray» с NSNumber с и NSString с. Я нуждаюсь в них в другом UIView, поэтому я иду так:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

DetailViewController *details = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
details.subjectText = [[myArray objectAtIndex:indexPath.row] objectForKey:@"subject"];

Тема текст работает. Но как я могу получить NSNumber s из этого? (Мне на самом деле они нужны как строки ...) Я бы преобразовал NSString из NSNumber следующим образом: NSString *blah = [NSNumber intValue]. Но я не знаю, как настроить это в коде выше ...

Ответы [ 7 ]

370 голосов
/ 19 октября 2010

Попробуйте:

NSString *myString = [NSNumber stringValue];
13 голосов
/ 15 марта 2014

Вы можете сделать это с:

NSNumber *myNumber = @15;
NSString *myNumberInString = [myNumber stringValue];
7 голосов
/ 02 августа 2012
//An example of implementation :
// we set the score of one player to a value
[Game getCurrent].scorePlayer1 = [NSNumber numberWithInteger:1];
// We copy the value in a NSNumber
NSNumber *aNumber = [Game getCurrent].scorePlayer1;
// Conversion of the NSNumber aNumber to a String with stringValue
NSString *StringScorePlayer1 = [aNumber stringValue];
5 голосов
/ 19 октября 2010

или попробуйте NSString *string = [NSString stringWithFormat:@"%d", [NSNumber intValue], nil];

3 голосов
/ 26 апреля 2014

Самое смешное, что NSNumber автоматически преобразуется в строку, если она становится частью строки.Я не думаю, что это задокументировано.Попробуйте:

NSLog(@"My integer NSNumber:%@",[NSNumber numberWithInt:184]);
NSLog(@"My float NSNumber:%@",[NSNumber numberWithFloat:12.23f]);
NSLog(@"My bool(YES) NSNumber:%@",[NSNumber numberWithBool:YES]);
NSLog(@"My bool(NO) NSNumber:%@",[NSNumber numberWithBool:NO]);

NSString *myStringWithNumbers = [NSString stringWithFormat:@"Int:%@, Float:%@ Bool:%@",[NSNumber numberWithInt:132],[NSNumber numberWithFloat:-4.823f],[NSNumber numberWithBool:YES]];
NSLog(@"%@",myStringWithNumbers);

Будет напечатано:

My integer NSNumber:184
My float NSNumber:12.23
My bool(YES) NSNumber:1
My bool(NO) NSNumber:0
Int:132, Float:-4.823 Bool:1

Работает на Mac и iOS

Этот не работает:

NSString *myNSNumber2 = [NSNumber numberWithFloat:-34512.23f];
2 голосов
/ 12 декабря 2016

In Swift 3.0

let number:NSNumber = 25
let strValue = String(describing: number as NSNumber)
print("As String => \(strValue)")

Мы можем получить числовое значение в строке.

2 голосов
/ 25 января 2016

В Swift вы можете сделать это

let number : NSNumber = 95
let str : String = number.stringValue
...