我有一个 NSDictionary 对象,它保存从某个 JSON 对象转换而来的数据。
我的问题是一些数字存储为字符串,而其他数字存储为整数。即在 NSDictionary 中,数字可以是 NSString 或 NSNumber 类型。不知何故,我必须转换数字,所以它们总是返回一个 NSNumber。
这是我到目前为止提出的解决方案:
#import "Convert.h"
@implementation Convert
+(NSNumber *)toInteger:(NSObject *)object {
if ([object isKindOfClass:[NSNumber class]]) {
return (NSNumber *) object;
}
else if ([object isKindOfClass:[NSString class]]) {
// Create number formatter
NSNumberFormatter *formatInt = [[NSNumberFormatter alloc] init];
[formatInt setNumberStyle:NSNumberFormatterDecimalStyle];
// return formatted number
return [formatInt numberFromString:(NSString *) object];
}
else {
return 0;
}
}
@end
在行动:
NSNumber *myint;
myint = [Convert toInteger:[dict valueForKeyPath:@"myobj.numberAsString"]];
myint = [Convert toInteger:[dict valueForKeyPath:@"myobj.numberAsInteger"]];
这行得通,但它似乎很冗长而且不是很便宜。还有其他我没有考虑过的方法吗?