Objective c NSNumberFormatter子类在10.6中工作,但在10.5中失败,出现一般错误

Objective c NSNumberFormatter子类在10.6中工作,但在10.5中失败,出现一般错误,objective-c,cocoa,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, [aS

我正在对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];
}
在MacOSX10.6及更高版本上,这段代码工作得非常好。但是,在10.5.x上,代码失败-对[super getObjectValue:…]的调用失败,返回的错误是相当通用的“NSFormattingError”(代码2048)

有人知道发生了什么事吗


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

有没有货币符号都会失败?也就是说,如果它不落入if,它会失败吗?是的,无论我通过什么,它都会失败。我还做了大量的NSLogging,以确保字符串“£2”和“2”都以“2”的形式发送到super。您有自定义格式的字符串集吗?或者只是默认的十进制数设置?能否提供用于获取此错误的驱动程序源?(我在10.5上使用上面的方法创建了一个简单的子类,但我的任何尝试都无法得到上面指出的错误)