objective c - ¿Cómo convertir un NSUInteger en un NSString?
objective-c (5)
¿Cómo convertir un NSUInteger
en un NSString
? Lo he intentado pero mi NSString
devolvió 0 todo el tiempo.
NSUInteger NamesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count];
NSLog(@"--- %d", NamesCategoriesNSArrayCount);
[NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];
NSLog(@"=== %d", NamesCategoriesNSArrayCountString);
Al compilar con soporte para arm64
, esto no generará una advertencia:
[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
Cuando arm64
para arm64
, use lo siguiente para evitar advertencias:
[NSString stringWithFormat:@"%tu", myNSUInteger];
O, en tu caso:
NSUInteger namesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count];
NSLog(@"--- %tu", namesCategoriesNSArrayCount);
[namesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%tu", namesCategoriesNSArrayCount]];
NSLog(@"=== %@", namesCategoriesNSArrayCountString);
(Además, sugerencia: las variables comienzan con minúsculas. Información: here )
Espero que su NamesCategoriesNSArrayCountString
sea NSString
; En caso afirmativo, utilice la siguiente línea de código.
NamesCategoriesNSArrayCountString = [NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];
istead of
[NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];
Este artículo de los Especificadores de formato de cadenas de Apple es específico cuando necesita formatear los tipos de Apple:
OS X utiliza varios tipos de datos (NSInteger, NSUInteger, CGFloat y CFIndex) para proporcionar un medio consistente de representar valores en entornos de 32 y 64 bits. En un entorno de 32 bits, NSInteger y NSUInteger se definen como int y unsigned int, respectivamente. En entornos de 64 bits, NSInteger y NSUInteger se definen como long y unsigned long, respectivamente. Para evitar la necesidad de utilizar diferentes especificadores de tipo de estilo printf según la plataforma, puede utilizar los especificadores que se muestran en la Tabla 3. Tenga en cuenta que en algunos casos es posible que tenga que emitir el valor.
-
[NSString stringWithFormat:@"%ld", (long)value]
: NSInteger se muestra como decimal -
[NSString stringWithFormat:@"%lx", (long)value]
: NSInteger se muestra como hexadecimal -
[NSString stringWithFormat:@"%lu", (unsigned long)value]
: NSUInteger se muestra como decimal -
[NSString stringWithFormat:@"%lx", (unsigned long)value]
: NSUInteger se muestra como hexadecimal -
[NSString stringWithFormat:@"%f", value]
: CGFloat -
[NSString stringWithFormat:@"%ld", (long)value]
: CFIndex se muestra como decimal -
[NSString stringWithFormat:@"%lx", (long)value]
: CFIndex se muestra como hexadecimal
Vea el artículo para más detalles.
También puedes usar:
NSString *rowString = [NSString stringWithFormat: @"%@", @(row)];
donde row es un NSUInteger.