Отображение числа в виде строки

Я получаю NSDictionary используя AFNetworking . этот словарь имеет много значений.

один из них я считаю INT или NSNumber , не знаю, что такое автоматическое преобразование. Ожидаемые числа – 2 и 3, но почему-то я всегда получаю очень длинное число … Я пробовал все, что знаю и мог найти, но я не могу заставить его показать правильное число в

 cell.numberOfLikes.text 

Это все, что я пробовал без успеха. Я был бы признателен за некоторые рекомендации

 NSLog(@"%i",_myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineDownloads"]); NSLog(@"%i",[NSNumber numberWithInt:_myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineDownloads"]]); cell.numberOfDownloads.text = [NSString stringWithFormat:@"%i",_myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineDownloads"]]; cell.numberOfLikes.text =_myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineDownloads"]); 

Указанный формат %i предназначен для базовых, целых типов данных. Поскольку у вас есть (или пытайтесь создать) объект NSNumber , вы можете использовать %@ для его регистрации. %@ используется для объектов Objective-C в спецификаторах формата.

Но это не помогает, если вы хотите присвоить NSNumber текстовому полю. Вам нужно преобразовать число в NSString . В идеале вы должны использовать NSNumberFormatter для преобразования NSNumber в NSString .

Сделай это:

 NSNumber *likesNumber = _myDownloadedInfo[@"routines"][indexPath.row][@"routine"][@"routineDownloads"]; NSString *numberText = [NSString stringWithFormat:@"%d". [likesNumber intValue]]; NSLog(@"Number: %@", numberText); cell.numberOfLikes.text = numberText; 

Несколько пунктов.

  • Во-первых, первый аргумент NSLog – это спецификатор формата. Он полностью эквивалентен спецификатору формата, используемому в [NSString stringWithFormat:] и редко возникает необходимость в обоих.
  • Далее, данные в Objective-C могут быть индивидуальными значениями int значениями char значениями char* (которые являются строками C), значениями float и объектными значениями Objective-C. (Плюс несколько различных длинных, неподписанных и т. Д. Значений, которые вы редко используете.)
  • NSString – объект Objective-C, а также NSNumber. С другой стороны, NSInteger является псевдонимом для определенного размера int и обычно взаимозаменяемым с int . Очень часто люди путаются с NSNumber (объект) и NSInteger (скалярный int) – они не совпадают.
  • В спецификаторе NSLog или stringWithFormat вы используете % за которым следует один или несколько символов, чтобы указать способ форматирования значения (в следующем списке значений). %d или %i является int . ( %d является предпочтительным.) %f – это простое значение с плавающей запятой (но форматирование их может усложниться). %s – строка в стиле C (т. е. значение char* ). %@ используется для форматирования объекта Objective-C. Вы используете %@ , в частности, для форматирования NSString или (для получения представления по умолчанию) NSNumber.

Важно понимать, как %@ работает в строке формата. Когда интерпретатор формата встречает его, он интерпретирует следующий элемент в списке значений как указатель на объект Objective-C и вызывает метод description этого объекта. NSString просто возвращает себя в результате description , а NSNumber возвращает NSString, который представляет представление символа значения числа. Другие объекты (все объекты поддержки объектов Objective-C, если только по умолчанию) возвращают либо простую идентификацию типа объекта, либо представление внутренних значений объекта.

Итак, если у вас есть NSNumber, вы можете напрямую форматировать его с помощью %@ , или вы можете извлечь числовое значение (например, [someNSNumber intValue] ), а затем соответствующим образом отформатировать это значение (например, %d ). Причиной для последнего было бы, если бы вы хотели указать ширину столбца для числа (например, %5d , чтобы отформатировать номер в поле с 5 позициями).

См. Здесь некоторые детали (gory) о различных спецификаторах формата.

Подсказка: %i – спецификатор преобразования для int .

один из них я считаю INT или NSNumber, не знаю, что такое автоматическое преобразование

Теперь вернитесь и прочитайте документацию NSArray , подумайте о том, может ли он содержать int s, а затем продолжить чтение.


Таким образом, объекты в словаре являются экземплярами NSNumber -> они объекты Objective-C -> они реализуются с помощью указателей. Poor NSLog() пытается преобразовать значение указателя в целое число. Либо используйте %@ чтобы получить описание номера, либо %i и [theNumber intValue] чтобы напечатать его целочисленное значение.

  • Есть ли разница между этими двумя способами создания объектов в ARC?
  • iOS iBeacon / Bluetooth, когда приложение мертво и ушло
  • Facebook SDK Singleton в xcode для автоматического входа в систему перед публикацией?
  • Как выполнить CI с помощью Xamarin UITest с помощью Visual Studio
  • Xcode 5 работает под управлением iOS7 с базовым SDK 6.1
  • Почтовый Composer iOS без UIViewController
  • Как скачать видео с youtube в приложении?
  • dispatch_async медленнее, затем выполняем функциюSelectorInBackground :?
  • Приоритет автоопределения Приоритет не разрешается
  • Изменить цвет заливки CALayer
  • Как читать этот CDATA с помощью NSXMLParser
  • Interesting Posts

    Как преобразовать значение String на основе XML в integer в Objective C

    Как создать одну функцию, которая организует несколько NSURLSessionDataTask (s)?

    numberOfSectionsInTableView не вызывается

    iOS8: Лучший способ автозаполнения адресов?

    Почему UIScrollView изменяет размер при переходе в другое текстовое поле – iOS iPhone

    Как установить AudioChannel как левый наушник и правый наушник?

    Как создать кнопку «Оценить это приложение» в приложении Air для iOS

    Катушка для рисования iPhone Quartz

    Размер экрана iPhone6 ​​возвращает 375 на симуляторе

    Устройство ios 6.1.1 не будет запускать xcode 4.6

    Создание статической библиотеки, которая зависит от другой статической библиотеки (RestKit)

    Сбой приложения iOS при отображении клавиатуры

    Прослушивание порта tcp в iphone

    Как обновить SDK Google Mobile Ads в xcode при получении этого сообщения: <Google: HTML> В настоящее время вы используете версию 7.6.0 SDK?

    / app / app_link_hosts API API не работает для меня в iOS, любая помощь будет оценена

    Давайте будем гением компьютера.