iAm*_*iAm 1 iphone formatting objective-c nsdecimalnumber
我有一个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();
}
Run Code Online (Sandbox Code Playgroud)
无论如何,我需要这不是NaN,所以我的想法是删除美元符号,但我不知道该怎么做,或者也许有更好的方法来实现我的目标.
jus*_*tin 10
NSString* cleanedString = [costString stringByTrimmingCharactersInSet: [NSCharacterSet symbolCharacterSet]];
Run Code Online (Sandbox Code Playgroud)
比上面的更强大(我认为它也会处理逗号)
好的,所以我最终使用这个代码,它适用于我
NSString *inString = self.amountLabel.text;
NSMutableString *outString = [NSMutableString stringWithCapacity:inString.length];
NSScanner *scanner = [NSScanner scannerWithString:inString];
NSCharacterSet *numbers = [NSCharacterSet characterSetWithCharactersInString:@".0123456789"];
while ([scanner isAtEnd] == NO)
{
NSString *buffer;
if ([scanner scanCharactersFromSet:numbers intoString:&buffer])
{
[outString appendString:buffer];
}
else {
[scanner setScanLocation:([scanner scanLocation] + 1)];
}
}
NSLog(@"%@", outString);
NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithString:outString];
self.purchase.amount = amount;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18590 次 |
| 最近记录: |