Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

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

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

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

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

IndexPath.row всегда выдаёт null - Программирование iOS
Подскажите, вот есть такой код, который сортирует словарь по расстоянию, нужно переменную coord передать на detailview где она разделяется...

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

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

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...

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

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

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

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

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

Кстати зачем нужна-то такая цепочка NSNumber -> NSString -> NSNumber ? Чем вас NSNumber сам по себе не устраивает?
1
BigDanceMouse
5 / 5 / 1
Регистрация: 26.01.2014
Сообщений: 69
29.07.2014, 11:27  [ТС] #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
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
29.07.2014, 11:54 #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
1
BigDanceMouse
5 / 5 / 1
Регистрация: 26.01.2014
Сообщений: 69
29.07.2014, 11:58  [ТС] #10
Да, спасибо! Я только что так попробовал и все заработало! Я повелся на то что в логи написано NSString и даже не подумал преобразовать ее назад в NSNumber.

Добавлено через 2 минуты
А НСНамбер получится записать в файл? Если - да, то так бы конечно было лучше.
0
zulkis
684 / 611 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
29.07.2014, 12:01 #11
BigDanceMouse, преобразовываете в NSData, потом пишете в файл.
Один из самых простых вариантов, так как NSNumber это наследник NSValue, а NSValue поддерживает NSCoding:
Objective-C
1
2
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:number];
    [data writeToFile:<#FilePathToWrite#> atomically:YES];
1
29.07.2014, 12:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2014, 12:01
Привет! Вот еще темы с ответами:

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

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

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

Почему функция всегда возвращает 0? - C++
bool trie_tree::consonants_check(char letter) { return tolower(letter) == ('w' || 'r' || 't' || 'p' || 's' || 'd' || 'f' || 'g' || 'h'...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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