Как конвертировать NSUInteger в строку NSString? - PullRequest
22 голосов
/ 01 марта 2011

Как конвертировать NSUInteger в NSString? Я пытался, но мой NSString все время возвращал 0.

NSUInteger NamesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count];  
NSLog(@"--- %d", NamesCategoriesNSArrayCount);  
[NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d",    NamesCategoriesNSArrayCount]];  
NSLog(@"=== %d", NamesCategoriesNSArrayCountString);

Ответы [ 5 ]

34 голосов
/ 07 декабря 2013

При компиляции с поддержкой arm64 это не сгенерирует предупреждение:

[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];
7 голосов
/ 03 марта 2011

Надеюсь, ваш NamesCategoriesNSArrayCountString равен NSString;если да, используйте следующую строку кода:

NamesCategoriesNSArrayCountString  = [NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];

вместо

[NamesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%d", NamesCategoriesNSArrayCount]];
5 голосов
/ 11 декабря 2015

Вы также можете использовать:

NSString *rowString = [NSString stringWithFormat: @"%@",  @(row)];

, где строка является NSUInteger.

5 голосов
/ 24 марта 2014

При компиляции для arm64 используйте следующее, чтобы избежать предупреждений:

[NSString stringWithFormat:@"%tu", myNSUInteger];

Или, в вашем случае:

NSUInteger namesCategoriesNSArrayCount = [self.NamesCategoriesNSArray count];  
NSLog(@"--- %tu", namesCategoriesNSArrayCount);  
[namesCategoriesNSArrayCountString setText:[NSString stringWithFormat:@"%tu", namesCategoriesNSArrayCount]];  
NSLog(@"=== %@", namesCategoriesNSArrayCountString);

(Также, совет: переменныеначните со строчной буквы. Информация: здесь )

0 голосов
/ 01 ноября 2016

Эта спецификация формата строки статья от Apple является конкретной, когда вам нужно отформатировать типы Apple:

OS X использует несколько типов данных - NSInteger, NSUInteger, CGFloat и CFIndex - для обеспечения согласованных средств представления значений в 32- и 64-разрядных средах. В 32-разрядной среде NSInteger и NSUInteger определяются как int и unsigned int соответственно. В 64-битных средах NSInteger и NSUInteger определяются как long и unsigned long соответственно. Чтобы избежать необходимости использовать разные спецификаторы типа printf-стиля в зависимости от платформы, вы можете использовать спецификаторы, показанные в таблице 3. Обратите внимание, что в некоторых случаях вам может потребоваться привести значение.

  • [NSString stringWithFormat:@"%ld", (long)value]: NSInteger отображается как десятичное число
  • [NSString stringWithFormat:@"%lx", (long)value]: NSInteger отображается как шестнадцатеричный
  • [NSString stringWithFormat:@"%lu", (unsigned long)value]: NSUInteger отображается как десятичное число
  • [NSString stringWithFormat:@"%lx", (unsigned long)value]: NSUInteger отображается как шестнадцатеричный
  • [NSString stringWithFormat:@"%f", value]: CGFloat
  • [NSString stringWithFormat:@"%ld", (long)value]: CFIndex отображается как десятичное число
  • [NSString stringWithFormat:@"%lx", (long)value]: CFIndex отображается как шестнадцатеричный

Подробнее см. Статью.

...