İnsan nasıl dönüştürmek yapar NSInteger
için NSString
veri türü?
Aşağıdakileri denedim, burada ay bir NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
İnsan nasıl dönüştürmek yapar NSInteger
için NSString
veri türü?
Aşağıdakileri denedim, burada ay bir NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
Yanıtlar:
NSInteger'lar long
, mevcut 64 bit mimarilerin tanımlarıyla eşleşmek için bunları nesnelemezsiniz;
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
[@(integerValue) stringValue]
daha temiz bir yaklaşımdır.
Obj-C yolu =):
NSString *inStr = [@(month) stringValue];
An NSInteger
, stringValue
değişmez bir metinle bile kullanılabilecek bir yönteme sahiptir
NSString *integerAsString1 = [@12 stringValue];
NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];
Çok basit. Öyle değil mi?
var integerAsString = String(integer)
%zd
%tu
32-bit ve 64-bit mimarilerde hiçbir döküm ve uyarı olmadan NSIntegers ( NSUInteger için) için çalışır . Bunun " önerilen yol " olmadığı konusunda hiçbir fikrim yok .
NSString *string = [NSString stringWithFormat:@"%zd", month];
Bunun neden işe yaradığını merak ediyorsanız bu soruya bakın .
Yapmanın kolay yolu:
NSInteger value = x;
NSString *string = [@(value) stringValue];
Burada @(value)
verileni , gerekli işlevi çağırabileceğiniz NSInteger
bir NSNumber
nesneye dönüştürür stringValue
.
İçin destekle derlerken arm64
, bu bir uyarı oluşturmaz:
[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
Ayrıca deneyebilirsiniz:
NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];
Bu durumda NSNumber sizin için iyi olabilir.
NSString *inStr = [NSString stringWithFormat:@"%d",
[NSNumber numberWithInteger:[month intValue]]];
Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')
. Bunun yerine Apple belgelerine göre gittimNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];