在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是一种强大的面向对象编程语言,特别是在苹果的iOS和macOS平台上广泛使用。"objective-c的计算器"项目是一个基础的编程练习,旨在帮助开发者理解Objective-C的基本语法和面向对象编程概念。在这个简易...
Objective-C是一种强大的面向对象编程语言,它在Apple的软件开发领域占据着核心地位,主要用于创建Mac OS X和iOS的应用程序。这个"Learn Objective-C 中文版 v2"的学习资源可能是针对那些希望深入理解Objective-...
Objective-C是一种面向对象的编程语言,它在C语言的基础上增加了SmallTalk-80的特性,主要应用于Apple的iOS和macOS平台。Objective-C中的UIKit框架是构建用户界面的基础,提供了丰富的控件和功能来创建iOS应用程序。...
《Objective-C.2.0 程序设计》这本书深入介绍了Objective-C语言,这是苹果公司开发的一种面向对象的编程语言,广泛用于Mac OS X和iOS应用程序的开发。书中除了基础的Objective-C语言知识外,还涵盖了Foundation框架...
通过深入理解C++到Objective-C的转换过程,开发者可以充分利用这两种语言的优势,拓宽自己的技能领域。 C++是面向对象的编程语言,以其强大的模板系统、STL(标准模板库)和底层控制能力著称。Objective-C则是在C++...
- **语言特性**:Objective-C是一种面向对象的编程语言,结合了C语言和Smalltalk的特性,是苹果公司开发iOS和macOS应用的基础语言之一。 - **目标读者**:本书适合初学者以及有一定基础的开发者学习Objective-C语言...
1. **数字、字符串和集合**:如NSNumber、NSString、NSArray、NSDictionary等类,用于处理数值、文本和数据集合。 2. **文件操作**:如NSFileManager,提供文件读写、路径操作等功能。 3. **内存管理**:Objective...
KVC(键值编码)和KVO(键值观察)是Objective-C中实现反射的两种技术,用于通过字符串名称访问对象的属性和观察属性值的变化。 内存管理在Objective-C中非常重要。通过引用计数器、自动释放池和property属性参数...
在 Objective-C 中,我们可以创建一个方法,利用布尔值来追踪这个过程: ```objc - (BOOL)isPrime:(NSUInteger)number { if (number ) { return NO; } for (NSUInteger i = 2; i * i ; i++) { if (number % i ...
Objective-C是一种强大的面向对象的编程语言,特别是在Apple的iOS和macOS开发中占据主导地位。本入门指南将帮助初学者理解Objective-C的基础概念,包括它的语法特性、继承、多态以及内存管理,同时还会涉及...
《Objective-C程序设计》(作者杨正洪、郑齐心、李建国)通过大量的实例系统地介绍了Objective-C语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读本书后,可以掌握Objective-C语言的基本内容,并进行...
NSString、NSArray、NSAttributedString、NSNumber等都是Foundation框架中定义的类,用于处理字符串、数组、字典等数据结构。 内存管理在Objective-C中使用引用计数机制,相关的关键字包括retain、release、...
Objective-C是一种强大的面向对象编程语言,它是Apple的iOS和macOS操作系统的核心开发语言。本教程主要针对想要深入学习Objective-C的开发者,特别是那些对苹果平台应用程序开发感兴趣的人员。虽然教程为英文版,但...
在这个例子中,创建了一个包含三个键值对的不可变字典,键为字符串类型,值为字符串表示的数字。需要注意的是,键在字典中是唯一的,不能重复。 访问NSDictionary中的元素,可以通过键直接获取对应的值,使用方法...
6. **选择器**(Selectors): 选择器是用于标识方法签名的字符串,可以用来动态调用方法。 #### 六、Objective-C的语法扩展 Objective-C在C的基础上进行了多方面的扩展: 1. **扩展名**: Objective-C文件通常分为两...
Objective-C 2.0是Apple开发的一种面向对象的编程语言,它是C语言的超集,主要用于iOS和Mac OS X应用程序的开发。Objective-C 2.0在Objective-C的基础上添加了一些新特性,使得编程更加简洁高效。以下是Objective-C ...
Objective-C是一种强大的面向对象编程语言,它在Apple的生态系统中占据着核心地位,主要用于iOS、macOS以及其他Apple平台的应用程序开发。如果你已经掌握了C和C++的基础,过渡到Objective-C将会是一个自然且有益的...