Bir dönüştürmek istiyorum inta NSStringAmaç C.
Bunu nasıl yapabilirim?
Yanıtlar:
İ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;
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);
@(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.
!) 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.
(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)
NSString *string = [NSString stringWithFormat:@"%d", theinteger];
@(myInt)a, kutu sentezleme , bir NSNumber döndürür.
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.
NSString *strValue = @(myInt).stringValue;