Jak konwertować NSInteger
na NSString
typ danych?
Wypróbowałem następujące, gdzie miesiąc to NSInteger
:
NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];
NSIntegers nie są obiektami, na które rzucasz je long
, aby dopasować definicję obecnej architektury 64-bitowej:
NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];
Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')
. Zamiast według docs firmy Apple , poszedłem zNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];
[@(integerValue) stringValue]
to czystsze podejście.Sposób Obj-C =):
źródło
Nowoczesne Objective-C
An
NSInteger
ma metodę,stringValue
której można używać nawet z literałemBardzo prosty. Prawda?
Szybki
źródło
%zd
działa dla NSIntegers (%tu
dla NSUInteger) bez rzutowań i bez ostrzeżeń na architekturach 32-bitowych i 64-bitowych. Nie mam pojęcia, dlaczego nie jest to „ zalecany sposób ”.Jeśli interesuje Cię, dlaczego to działa, zobacz to pytanie .
źródło
Łatwy sposób:
Tutaj
@(value)
konwertuje daneNSInteger
doNSNumber
obiektu, dla którego można wywołać żądaną funkcjęstringValue
.źródło
Podczas kompilacji z obsługą dla
arm64
, nie spowoduje to wygenerowania ostrzeżenia:źródło
Możesz też spróbować:
źródło
Odpowiedź została udzielona, ale pomyśl, że w niektórych sytuacjach będzie to również interesujący sposób na uzyskanie ciągu znaków od NSInteger
źródło
W takim przypadku NSNumber może Ci się przydać.
źródło