NSNumberFormatter сбой iPhone SDK 4.0b2 - PullRequest
       12

NSNumberFormatter сбой iPhone SDK 4.0b2

1 голос
/ 25 апреля 2010

У меня есть приложение, которое было в магазине приложений некоторое время и прекрасно работает на OS 3.1 - 3.13. Однако при тестировании на 4.0b2 я заметил, что он каждый раз вылетает в одном и том же месте, но только на устройстве, а не на симуляторе. Я использую 3GS для тестирования.

В loadView я инициализирую объект NSNumberFormatter, который объявлен и сохранен в интерфейсе, поэтому у меня есть доступ к нему везде. В моем методе я вызываю его несколько раз, чтобы преобразовать строковые значения в nsnumbers для хранения в изменяемом словаре.

Вот пример:

[myDictionary setObject:[myStyleFormatter numberFromString:@"1"] forKey:@"hours"];
[myDictionary setObject:[myStyleFormatter numberFromString:@"30"] forKey:@"minutes"];
[myDictionary setObject:[myStyleFormatter numberFromString:@"10"] forKey:@"seconds"];

По какой-то причине он падает, как только пытается установить часы. Ошибка «попытка вставить нулевое значение (ключ: часы)»

Я все время делал что-то не так? Изменился ли API для 4.0b2?

Спасибо

Хови

1 Ответ

1 голос
/ 09 июля 2010

У меня была такая же проблема. Я проследил это до оператора NSNumberFormatter, который не любил пробелы (или запятые) каждые 3 цифры в числах. Что является одной из причин наличия number formatter.

NSNumber *number = [currencyFormatter numberFromString:mstring];

Это довольно стандартный код во многих примерах в Интернете, поэтому я подозреваю, что многие найдут проблему.

Во всяком случае, я исправил это, избавившись от пробелов

NSArray *sArray = [mstring componentsSeparatedByString:@" "];
[mstring setString:@" "]; //space at beginning is OK, would prefer nil
for (NSString *sElement in sArray) {
    [mstring appendString:sElement];
}

Тогда сработала строка currencyFormatter.

НО, в другой части моего кода, тот же оператор currencyFormatter работал без проблем. Я попытался изменить код в этой области, чтобы вызвать проблему, но не смог.

Итак, очень любопытно !!!

...