我有一个UILabel,其中包含格式化的字符串(用于货币),因此有一个美元符号,$21.34。
在核心数据实体中,属性是double类型,我正在使用NSDecimalNumber保存到数据库中。
self.purchase.name = self.nameTextField.text;
NSString *string = self.amountLabel.text
NSDecimalNumber *newAmount = [[NSDecimalNumber alloc] initWithString:string];
NSLog(@"%@", string); // THIS RETURNS NaN, because of dollar sign i think
NSManagedObjectContext *context = self.purchase.managedObjectContext;
NSError *error = nil;
if (![context save:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
无论如何,我需要它不能是NaN,所以我的想法是去掉美元符号,但我不知道如何做到这一点,或者也许有更好的方法来实现我的目标。
NSNumberFormatter
来去除字符串周围的格式并将其转换为NSNumber
。如果遇到货币符号在数字右侧的情况,你的代码也会出问题,而使用NSNumberFormatter
则可以正确处理此类情况。 - Dave DeLong