Chciałbym przekonwertować an int
na a NSString
w celu C.
W jaki sposób mogę to zrobić?
objective-c
Jogini
źródło
źródło
NSString *strValue = @(myInt).stringValue;
stringValue
, ale wszystkie majądescription
- więc jako dobrą praktykę lepiej przyzwyczaić się do używaniadescription
(NSNumber
nie ma, nie musisz się tutaj martwić). Spróbuj tego (description
wydrukuje datę, alestringValue
ulegnie awarii):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
@(myInt)
jest wyrażeniem w ramce dla[NSNumber numberWithInt:]
i zawsze zwróci NSNumber, gdy otrzyma int.[NSNumber stringValue]
zawsze zwróci NSString. W kodzie twojego komentarza wymuszenie rzutowania(id)
i przypisywania do innego typu jest oczywistym błędem programistycznym: nigdy nie powinieneś tego robić. To tak, jakby zmieniać metodę, a następnie argumentować, że metoda nie robi tego, co pierwotnie robiła.!
), a zorientujesz się, że robiłeś to źle w Objective-C. Jeśli obiekttest
nie został stworzony przez Ciebie, nie jesteś za to odpowiedzialny. Możesz próbować wywołaćisKindOfClass:
wszystkie otrzymane parametry, ale nawet to można oszukać (na przykład przekazując strukturę zamiast obiektu NSObject). Więc nie rób tego: po prostu udokumentuj wyraźnie oczekiwane typy.(id)
jest błędem, tylko po to, aby pokazać, że IMOdescription
jest preferowanestringValue
(mogę się mylić, nie programowałem w ObjC od lat)źródło
@(myInt)
jest wyrażeniem w ramce , zwraca NSNumber.To jeden z wielu sposobów.
źródło
Jeśli ten ciąg jest przeznaczony do prezentacji użytkownikowi końcowemu, należy użyć
NSNumberFormatter
. Spowoduje to dodanie tysięcy separatorów i uszanuje ustawienia lokalizacji użytkownika:Na przykład w USA utworzyłoby to ciąg
10,000
, ale w Niemczech tak10.000
.źródło