在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
类型,再使用NSNumber
的numberWithFloat
方法转成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
对于这个方法,我做了几次修改。当然,这是自己本着爱好再写,如果到真实项目中,可能在第一步就停滞了。
在这个方法的编写中,我理解了NSNumber
、NSString
、float
三个类型的关系,及其之间的相互转换。float
是原始类型,NSNumber
和NSString
是对象。
分享到:
相关推荐
《Objective-C程序设计》(作者杨正洪、郑齐心、李建国)通过大量的实例系统地介绍了Objective-C语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读本书后,可以掌握Objective-C语言的基本内容,并进行...
在Objective-c中有int的数据类型,那为什么还要使用数字对象NSNumber?这是因为很多类(如NSArray)都要求使用对象,而int不是对象。 NSNumber就是数字对象我们可以使用NSNumber对象来创建和初始化不同类型的数字...
验证套件Lua 绑定Objective-C,实现了大部分Objective-C 特性待办事项支持类-ivar,您不能在方法块中通过名称(例如,_ivarName)访问 ivar 完全支持块,除了一些有线条件外,几乎完全支持块特征支持大部分Objective...
Objective-C中的一个简单的模板渲染器。 用对象属性,方法和填充模板。 用法 给定 @interface MYObject : NSObject @property ( nonatomic , copy ) NSString *color; @property ( nonatomic , copy ) NSNumber *...
Software engineering,programming language,operating system,iOS,OS,iPhone,iPad objective c,cocoa touch,SDK,object oriented design,Apple,Macintosh,tools,language,runtime,Xcode,objective-...
用于获取 Objective-C 类的所有实例变量及其对应类型的代码(使用 Objective-C 运行时) 它还支持超级类用法要运行示例项目, pod install克隆 repo,然后从 Example 目录运行pod install 。安装ClassProperty 可...
Objective-C的功能运算符从Swift.Sequence派生的功能运算符的Objective-C库,可帮助您编写更简洁易读的代码进行集合转换。 支持的基础集合包括: NSArray , NSDictionary , NSOrderedSet和NSSet 。功能运算符过滤...
Objective-C的基础通用支持。 包括OCGenerics.h 在NSArray中注册要使用的类 GENERIC ( NSString ) GENERIC( NSNumber ) 像这样声明一个伪造的NSMuatbleArray NSMutableArray ( NSString ) *strAry = [...
object-c基础语法NSNumber, 适合初学者,主要学习NSNumber的设置,NSNumber中可以存储任何的数字类型,以及BOOL和char等
Jastor是一个Objective-C基类,它使用字典进行初始化(可能是从JSON响应中进行初始化),并将字典值分配给其所有(派生类)键入的@properties。 它支持嵌套类型,数组,NSString,NSNumber,NSDate等。 Jastor...
通过compare:方法为Foundation中已经支持顺序的类定义了顺序compare:方法: NSString , NSDate , NSNumber , NSIndexPath以及它们的子类,例如NSMutableString和NSDecimalNumber 。 在其他情况下,比较器仅对...
从 JSON 生成 Objective-C 模型并从这些模型生成 JSON。 内置支持: NSString NSArray NSDictionary NSNumber NSDate NSURL 带有NSNull空值 所有原始数据类型( int 、 BOOL 、 float 、 CGFloat等) 真的很...
NSNumber-Helper NSNumber的一个扩展名,它扩展了标准Foundation类的功能。 验证方法 + ( BOOL )isInteger:( NSNumber *)number; + ( BOOL )isDouble:( NSNumber *)number; ##操作方法 - ( NSString *)...
JS 虽然是 OO,但是并没有 class,所以将 JS 对象传到 Obj C 程序里头,除了基本字串会转换成 NSString、基本数字会转成 NSNumber,像是 Array 等其他对象,在 Objective-C 中,都是 WebScriptObject 这个 Class。...
IOS 开发之ObjectiveC的变量类型的字符代表 实例代码: NSDictionary *dic = @{@1:[NSNumber numberWithBool:YES], @2:[NSNumber numberWithChar:'1'], @3:[NSNumber numberWithDouble:2.0], @4:[NSNumber ...
Boxing the Compass - 从 Objective-C 中实现的罗盘度数派生的主要和有序罗盘方向。 来自维基百科 拳击罗盘是按顺序命名罗盘顺时针方向的所有三十二点的动作。 这些名称由基本方向的首字母和它们的中间顺序方向组成...
AKU正则字符串.h AKUStringGenerator.h AKUChiSquaredTest.h 贡献 叉它! 创建您的功能分支: git checkout -b my-new-feature 提交您的更改: git commit -am 'Add some feature' 推送到分支: git push ...
在iOS开发过程中经常需要与服务器进行数据通讯,Json就是一种常用的高效简洁的数据格式,通过本文给大家介绍iOS中json解析出现的null,nil,NSNumber的解决办法,感兴趣的朋友参考下