NSNumberFormatter子类在10.6中工作但在10.5中因一般错误而失败

时间:2010-01-19 15:01:25

标签: objective-c cocoa

我正在对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)。

有谁知道发生了什么事?

格式化程序设置为生成十进制数。

0 个答案:

没有答案