Подкласс NSNumberFormatter, работающий в 10.6, но не работающий в 10.5 с общей ошибкой - PullRequest
1 голос
/ 19 января 2010

Я создаю подкласс NSNumberFormatter, чтобы символ валюты был необязательным. Вот мой код:

- (BOOL)getObjectValue:(out id *)anObject forString:(NSString *)aString range:(inout NSRange *)rangep error:(out NSError **)error {

    if (rangep == NULL){
        NSRange newRange = NSMakeRange(0, [aString length]);
        rangep = &newRange;
    }

    NSString *newStr = [aString stringByReplacingOccurrencesOfString:[self currencySymbol]
                                                      withString:@"" 
                                                         options:0
                                                           range:*rangep];

    if (![newStr isEqualToString:aString]) {
        NSRange newRange;
        newRange.location = ((NSRange)*rangep).location;
        newRange.length = ((NSRange)*rangep).length;
        newRange.length -= ([aString length] - [newStr length]); 

        rangep = &newRange;
    }

    return [super getObjectValue:anObject
            forString:newStr
                range:rangep
                error:error];
}

В Mac OS X 10.6 и выше этот код работает абсолютно нормально. Однако в 10.5.x код завершается ошибкой - происходит сбой при вызове [super getObjectValue: ...], и возвращаемая ошибка является довольно общим «NSFormattingError» (код 2048).

Кто-нибудь знает, что происходит?

Форматтер настроен на генерацию десятичных чисел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...