Как конвертировать NSNumber в NSString
так что у меня есть NSArray
"myArray" с NSNumber
s и NSString
s. Мне нужны они в другом UIView
поэтому я делаю так:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DetailViewController *details = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
details.subjectText = [[myArray objectAtIndex:indexPath.row] objectForKey:@"subject"];
subjectText работает.
Но как я могу получить NSNumber
s вне него? (На самом деле мне они нужны как струны...)
Я бы преобразовал a NSString
С NSNumber
такой:
NSString *blah = [NSNumber intValue]
. Но я не знаю, как настроить его в коде выше...
7 ответов:
вы можете сделать это с:
NSNumber *myNumber = @15; NSString *myNumberInString = [myNumber stringValue];
//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];
самое смешное, что 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];