web-dev-qa-db-fra.com

Comment convertir NSNumber en NSString

J'ai donc un NSArray "myArray" avec NSNumbers et NSStrings. J'ai besoin d'eux dans un autre UIView alors je vais comme ça:

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

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

Le sujetText fonctionne. Mais comment puis-je obtenir le NSNumbers? (J'en ai réellement besoin sous forme de chaînes ...) Je convertirais un NSString en un NSNumber comme ceci: NSString *blah = [NSNumber intValue]. Mais je ne sais pas comment le configurer dans le code ci-dessus ...

131
dav3

Essayer:

NSString *myString = [NSNumber stringValue];
373
JonLOo

Vous pouvez le faire avec:

NSNumber *myNumber = @15;
NSString *myNumberInString = [myNumber stringValue];
13
rhalgravez
//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];
7
fcoque

ou essayez NSString *string = [NSString stringWithFormat:@"%d", [NSNumber intValue], nil];

5
sbs

Ce qui est amusant, c’est que NSNumber se convertit automatiquement en chaîne s’il devient partie intégrante d’une chaîne. Je ne pense pas que cela soit documenté. Essayez ces:

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);

Il imprimera:

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

Fonctionne sur Mac et iOS

Celui-ci ne fonctionne pas:

NSString *myNSNumber2 = [NSNumber numberWithFloat:-34512.23f];
3
Tibidabo

Dans Swift vous pouvez faire comme ceci

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

Dans Swift 3.

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

Nous pouvons obtenir la valeur numérique sous forme de chaîne.

2
Gautam Sareriya