Objective c NSNumberFormatter子类在10.6中工作,但在10.5中失败,出现一般错误
我正在对NSNumberFormatter进行子类化,以允许货币符号是可选的。这是我的密码: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
- (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上使用上面的方法创建了一个简单的子类,但我的任何尝试都无法得到上面指出的错误)