`
mikixiyou
  • 浏览: 1084772 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
C3c8d188-c0ab-3396-821d-b68331e21226
Oracle管理和开发
浏览量:348981
社区版块
存档分类
最新评论

Objective-c中数字型字符串转换NSNumber的三种方法

    博客分类:
  • iOS
阅读更多

MAC OS/iOS 开发时,我们会遇到这类情况。如何将输入的符合数字格式的字符串,转换成NSNumber 类型的对象。

我首先写了这个方法:

 

     id result;

     NSString * ss;

 

     ss=@"124";

 

     result=[NSNumber numberWithFloat:[ss floatValue]];

 

     NSLog(@"%f",[ss floatValue]);

     NSLog(@"%f",[result floatValue]); 
 

 

直接将NSString 类的floatValue 方法将ss 对象转成float 类型,再使用NSNumbernumberWithFloat 方法转成NSNumber 类型的对象。

但这里有一个问题, 如果ss 不是@”111.22 ,而是@xxx ”,则该方法将报错的。

因此,这里需要一个事先判断,判断ss 是不是能转成成NSNumber

根据这个修改要求,我再将代码转换成这样:

   ss=@"224.34129";

 

     NSNumberFormatter *f = [[NSNumberFormatter alloc] init];

 

     if ([f numberFromString:ss])

     {

         result=[NSNumber numberWithFloat:[ss floatValue]];

     }

     else

     {

         result=ss;

     }

 

     NSLog(@"%.2f",[result floatValue]); 

 

 

这样,功能是没有问题了。但看过之后,觉得有点累赘感。

代码简洁点可不可以呢?最终修改成这样几行,如下所示:

 

    ss=@"324.34";

 

     result=[f numberFromString:ss];

     if(!(result))

     {

         result=ss;

     }

 

     NSLog(@"%.2f",[result floatValue]); 

 

 

 

 

(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1623943 )

 

 

测试结果如下: 

2012-08-07 17:35:04.203 apple1[2484] 124.000000

2012-08-07 17:35:04.203 apple1[2484] 124.000000

2012-08-07 17:35:04.203 apple1[2484] 224.34

2012-08-07 17:35:04.203 apple1[2484] 324.34

 

对于这个方法,我做了几次修改。当然,这是自己本着爱好再写,如果到真实项目中,可能在第一步就停滞了。

在这个方法的编写中,我理解了NSNumberNSStringfloat 三个类型的关系,及其之间的相互转换。float 是原始类型,NSNumberNSString 是对象。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics