NSString int dönüştürmek nasıl?


101

Bir dönüştürmek istiyorum inta NSStringAmaç C.

Bunu nasıl yapabilirim?

Yanıtlar:


147

İlkel öğeler, @()ifade ile nesnelere dönüştürülebilir . Yani en kısa yolu haline getirmektir intiçin NSNumberve birlikte dize temsilini almak stringValueyöntemiyle:

NSString *strValue = [@(myInt) stringValue];

veya

NSString *strValue = @(myInt).stringValue;

12
Biraz daha az ayrıntılı:NSString *strValue = @(myInt).stringValue;
Distortum

@DielsonSales bazı nesnelerde yoktur stringValue, ancak hepsinde vardır description- bu yüzden iyi bir uygulama olarak kullanmaya alışmak daha iyidir description( NSNumberburada endişelenmenize gerek yok). Bunu deneyin ( descriptiontarihi basacak, ancak stringValueçökecek):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
İslam Q.

1
@IslamQ. @(myInt)Bir olan kutulu ifade için [NSNumber numberWithInt:]ve bir int verildiğinde her zaman bir NSNumber dönecektir. [NSNumber stringValue]her zaman bir NSString döndürür. (id)Yorumunuzun kodunda, farklı bir türle zorlama yapmak ve atamak açık bir programlama hatasıdır: bunu asla yapmamalısınız. Bu, bir metodu karıştırmak ve sonra o metot hakkında tartışmak gibi, başlangıçta yaptığı şeyi yapmamaktır.
Cœur

1
@IslamQ. Çarpışma operatörünü ( !) kullanmadan yorumunuzu Swift'e dönüştürmeyi deneyin ve bunu Objective-C'de yanlış yaptığınızı anlayacaksınız. Nesne testsizin tarafınızdan yaratılmadıysa, bu sizin sorumluluğunuz değildir. Aldığınız isKindOfClass:tüm parametreleri çağırmayı deneyebilirsiniz , ancak bu bile kandırılabilir (örneğin NSObject yerine bir yapı geçirerek). Öyleyse yapmayın: sadece beklenen türleri açıkça belgeleyin.
Cœur

@ Cœur, elbette bir nesneye atıf yapmak (id)bir hatadır, sadece IMO'nun descriptiontercih edildiği noktayı göstermekti stringValue(yanılıyor olabilirim, yıllardır ObjC'de programlamadım)
İslam Q.

145
NSString *string = [NSString stringWithFormat:@"%d", theinteger];

@Elist ilkel türü bildiğinizde, kodunuzdan ara NSNumber'dan kaçınarak biraz daha az ek yük olup olmadığını merak ediyorum. @(myInt)a, kutu sentezleme , bir NSNumber döndürür.
Cœur

38
int i = 25;
NSString *myString = [NSString stringWithFormat:@"%d",i];

Bu birçok yoldan biridir.


2

Bu dizi son kullanıcıya sunum için ise, kullanmalısınız NSNumberFormatter. Bu, binlerce ayırıcı ekleyecek ve kullanıcı için yerelleştirme ayarlarını kabul edecektir:

NSInteger n = 10000;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:@(n)];

Örneğin ABD'de bu bir dize oluşturur 10,000, ancak Almanya'da bu olur 10.000.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.