Подтвердить что ты не робот

Как преобразовать NSUInteger в NSString?

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

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

Ответ 1

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

[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];

Ответ 2

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

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

istead

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

Ответ 3

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

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

где row является NSUInteger.

Ответ 4

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

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

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

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

(Также, подсказка: Переменные начинаются с нижнего регистра. Info: здесь)

Ответ 5

Этот String Format Specifiers статья от 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 отображается как hex
  • [NSString stringWithFormat:@"%lu", (unsigned long)value]: NSUInteger отображается как десятичный
  • [NSString stringWithFormat:@"%lx", (unsigned long)value]: NSUInteger отображается как hex
  • [NSString stringWithFormat:@"%f", value]: CGFloat
  • [NSString stringWithFormat:@"%ld", (long)value]: CFIndex отображается как десятичный
  • [NSString stringWithFormat:@"%lx", (long)value]: CFIndex отображается как hex

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