Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
BigDanceMouse
5 / 5 / 1
Регистрация: 26.01.2014
Сообщений: 69
#1

IntegerValue всегда возвращает 1 - Objective-C

29.07.2014, 11:02. Просмотров 608. Ответов 10
Метки нет (Все метки)

Доброго, вам, времени суток!
Столкнулся со следующей проблемой: имею NSNumber, который сохраняется в числовом формате (получаем, например, строку @"1,775"). В другом контроллере нужно из этой строки выдернуть int или NSInteger (не принципиально, хоть double) но вот например integerValue, как и подобные ему, всегда возвращает 1. Сохраненные данные, к сожалению пока не могу изменить, по этому прошу вашей помощи в том, как мне достать из NSString это число.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2014, 11:02     IntegerValue всегда возвращает 1
Посмотрите здесь:

Mysqli_nun_row() всегда возвращает 1 - PHP БД
Даже если записей нет результат возвращает 1, эт я знаю. Но Теперь столкнулся с проблемой как получить точный ответ . Если записей нет...

GetIdentifier всегда возвращает 0 - Программирование Android
Здравствуйте, хочу сменить изображение у imageView, для этого нужно найти id ресурса. Проблема в том, что getIdentifier возвращает...

LAST_INSERT_ID всегда возвращает 0 - Delphi БД
что я делаю не так? MySQLQuery.SQL.Text := 'INSERT INTO docs (sid, name, ext, data) VALUES (:SID,:NAME,:EXT,:DATA)'; ...

in_avail() всегда возвращает 0. - C++
#include <c++/4.4/iostream> #include <c++/4.4/streambuf> int main() { int i,k; i=k=0; std::cout<<"Enter two...

Бинарный поиск всегда возвращает (-1) - C++
Всегда возвращает -1 #include <iostream> int binary(int* m, int n, int e) { int r = 0, l = n-1, h;

Запрос всегда возвращает результат - PHP
Доброго времени суток Есть код: <?php error_reporting(E_ALL); if (isset($_POST)){ if (isset($_POST, $_POST, $_POST, $_POST)){...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
29.07.2014, 11:07     IntegerValue всегда возвращает 1 #2
Я верно понимаю?
1. Вы берете строку @"1,775"
2. Вызываете [@"1,775" integerValue]
3. Полученное значение всегда равно 1.

Что вы ожидаете чтобы было возвращено?
BigDanceMouse
5 / 5 / 1
Регистрация: 26.01.2014
Сообщений: 69
29.07.2014, 11:10  [ТС]     IntegerValue всегда возвращает 1 #3
Да, все правильно.
Хотелось бы получить
Objective-C
1
2
3
NSInteger a = 1775;
или
int a = 1775;
Добавлено через 56 секунд
flout тоже, как ни странно, возвращает 1. Не 1,000000 а именно 1
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
29.07.2014, 11:11     IntegerValue всегда возвращает 1 #4
BigDanceMouse, а разделение запятой?

Код покажите.
BigDanceMouse
5 / 5 / 1
Регистрация: 26.01.2014
Сообщений: 69
29.07.2014, 11:15  [ТС]     IntegerValue всегда возвращает 1 #5
строка @"1,775" создается путем записи в файл экземпляра NSNumber отформатированного как NSNumberFormatterDecimalStyle, по этому, в зависимости от региона настроек она имеет вид @"1,775", @"1 775" и т.д. Но изначально оно является int = 1775
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
29.07.2014, 11:22     IntegerValue всегда возвращает 1 #6
Если вы работаете с NSNumberFormatter пользуйтесь методами его:
Objective-C
1
2
- (NSString *)stringFromNumber:(NSNumber *)number;
- (NSNumber *)numberFromString:(NSString *)string;
Предварительно вызвав:
Objective-C
1
- (void)setNumberStyle:(NSNumberFormatterStyle)style;
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
29.07.2014, 11:25     IntegerValue всегда возвращает 1 #7
Цитата Сообщение от BigDanceMouse Посмотреть сообщение
NSNumber отформатированного как NSNumberFormatterDecimalStyle
Так тем же форматтером и доставайте из строки.

Кстати зачем нужна-то такая цепочка NSNumber -> NSString -> NSNumber ? Чем вас NSNumber сам по себе не устраивает?
BigDanceMouse
5 / 5 / 1
Регистрация: 26.01.2014
Сообщений: 69
29.07.2014, 11:27  [ТС]     IntegerValue всегда возвращает 1 #8
Создание
Objective-C
1
2
3
4
5
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
        [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *number = [NSNumber numberWithInt:varWithIntValue];
NSString *stringForSaving = [formatter stringFromNumber:number];
myAnotherController savingData:stringForSaving;
И попытка получить
Objective-C
1
2
NSInteger value = [[arrayWithData objectAtIndex:0] integerValue];
//Всегда получается 1, а NSValue == nill
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
29.07.2014, 11:54     IntegerValue всегда возвращает 1 #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
BigDanceMouse, еще раз. Как сохраняете - так и получайте:
Objective-C
1
2
- (NSString *)stringFromNumber:(NSNumber *)number;
- (NSNumber *)numberFromString:(NSString *)string;
Ваше получение должно быть таким:
Objective-C
1
2
3
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
        [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *number = [formatter numberFromString:arrayWithData[0]];
Где arrayWithData[0] - NSString
BigDanceMouse
5 / 5 / 1
Регистрация: 26.01.2014
Сообщений: 69
29.07.2014, 11:58  [ТС]     IntegerValue всегда возвращает 1 #10
Да, спасибо! Я только что так попробовал и все заработало! Я повелся на то что в логи написано NSString и даже не подумал преобразовать ее назад в NSNumber.

Добавлено через 2 минуты
А НСНамбер получится записать в файл? Если - да, то так бы конечно было лучше.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2014, 12:01     IntegerValue всегда возвращает 1
Еще ссылки по теме:

ScrollTop элемента всегда возвращает 0 - JavaScript
Так: $(window).on('scroll', function() { console.log($('.filter').scrollTop()); }); или так: ...

Условие всегда возвращает false - PHP
ребят подскажите почему всегда условие выдает, что пароль неверный? ввел 3 номера с паролем (если заходить с номеров в icq то все...

Почему всегда возвращает -1 в ответе? - Delphi
можете помочь еще в одной программе Добавлено через 22 минуты Waddonator, ошибку выводит

Httpwebresponse.Statuscode всегда возвращает ОК - C#
Всем добрый день. Пытаюсь получить значение свойства statuscode от ответа на запрос, при ошибке 404 - NOT FOUND с сервера. Проверяю это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
29.07.2014, 12:01     IntegerValue всегда возвращает 1 #11
BigDanceMouse, преобразовываете в NSData, потом пишете в файл.
Один из самых простых вариантов, так как NSNumber это наследник NSValue, а NSValue поддерживает NSCoding:
Objective-C
1
2
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:number];
    [data writeToFile:<#FilePathToWrite#> atomically:YES];
Yandex
Объявления
29.07.2014, 12:01     IntegerValue всегда возвращает 1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru