在Objective-C中,以数字格式组成的字符串经常需要转换为NSNumber对象后再使用。例如有一个字符串对象@"111.22",需要转为NSNumber对象,最简单的方法就是这样:[NSNumber numberWithFloat:[@"111.22" floatValue]]。

这个方法先使用NSString的floatValue方法将字符串转成float,再使用NSNumber的numberWithFloat方法将结果转成NSNumber。但它有一个前提条件,就是输入的字符串一定要以数字组成。如果发现有非数字字符,则直接导致程序出错。因此,它需要事先判断,保证字符串能转成NSNumber。

根据新的要求,将转换操作过程修改一下,代码如下所示:

NSString *ss=@"224.34129";
    id result;
    NSNumberFormatter *f = [[NSNumberFormatter alloc] init];
    if ([f numberFromString:ss])
    {
        result=[NSNumber numberWithFloat:[ss floatValue]];
    }
    else
    {
        result=ss;
    }
    NSLog(@"%.2f",[result floatValue]);

如此一改,功能倒是没问题了,只是看上去有一些累赘。我们知道,代码越简洁,出bug的概率就越低,代码也越显得优雅。再做修改,如下所示:
 
    NSString *ss=@"224.34129";
    id result;
    result=[f numberFromString:ss];
    if(!(result))
    {
        result=ss;
    }
    NSLog(@"%.2f",[result floatValue]);

还有其他的转换函数,如
1、字符串拼接
 NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB];

2、字符串转int
int intString = [newString intValue];

3、int转字符串
NSString *stringInt = [NSString stringWithFormat:@"%d",intString];

4、字符串转float
 float floatString = [ newString floatValue];

5、float转字符串
NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];
    
通过这些转换操作,可以理解NSNumber、NSString、float三个类型的关系和转换方法。int/float是Objective-C的原始类型,而NSNumber和NSString则是类。

6,其他类型强制转换成字符串。

NSString *createdStr = [NSStringstringWithFormat:@"%@",[myData valueForKey:@"created"]];

[myData valueForKey:@"created"]为NSDate类型。

7,

NSString *str = [myData valueForKey:@"theData"];

//    将字符串转换成整数

int number = [str intValue];

//    再将整数转换成字符串

NSString *Tstr = [NSStringstringWithFormat:@"%d", number];

OC中的类型强制转换的更多相关文章

  1. C#高级编程笔记 2016年10月8日运算符和类型强制转换

    1.checked和unchecked 运算符 C#提供了checked 和uncheckde 运算符.如果把一个代码块标记为checked, CLR就会执行溢出检查,如果发生溢出,就抛出overfl ...

  2. C语言指针类型 强制转换

    关于C语言指针类型 强制转换  引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个 ...

  3. C#高级编程9-第7章 运算符和类型强制转换

    运算符和类型强制转换 1.运算符 运算符的简化操作 条件运算符: if-else的简化操作,也称三元运算符.如果条件为真,返回一个值,为假返回另外一个值. condition?true_value:f ...

  4. C#高级编程 (第六版) 学习 第六章:运算符和类型强制转换

    第六章 运算符和类型强制转换 1,运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ ...

  5. 3_PHP表达式_5_数据类型转换_类型强制转换

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. PHP类型转换分为类型自动转换和类型强制转换. 3.5.2 类型强制转换 类型强制转换允许编程人员手动将变量的数据 ...

  6. C# 运算符和类型强制转换(6) 持续更新

    C#支持的运算符 https://msdn.microsoft.com/zh-cn/library/6a71f45d(v=vs.140).aspx checked 和 unchecked ; b++; ...

  7. C#学习笔记二 (资源托管,泛型,数组和元组,运算符和类型强制转换)

     托管和非托管资源 1.托管资源是指GC管理的内存空间,非托管资源是指文件句柄,网络连接,数据库连接等. 2.方法中临时申请的变量,被存放在栈中.栈存储非对象成员的值数据.例如在方法中有B b=new ...

  8. Go 类型强制转换

    Go 类型强制转换 强制类型的语法格式:var a T = (T)(b),使用括号将类型和要转换的变量或表达式的值括起来 强制转换需要满足如下任一条件:(x是非常量类型的变量,T是要转换的类型) 1. ...

  9. 【读书笔记】C#高级编程 第七章 运算符和类型强制转换

    (一)运算符 类别 运算符 算术运算符 + - * / % 逻辑运算符 & | ^ ~ && || ! 字符串连接运算符 + 增量和减量运算符 ++ -- 移位运算符 < ...

随机推荐

  1. SBT模版

    /*Author:WNJXYK*/ #include<cstdio> using namespace std; ; struct SBT{ int left; int right; int ...

  2. openStack openSource CloudComputing

    <一,> ,OpenStack a few Core Compontents integration with openStack-keystone Identity service1.1 ...

  3. IOS开发之----协议与委托(Protocol and Delegate) 实例解析

    1 协议: 协议,类似于Java或C#语言中的接口,它限制了实现类必须拥有哪些方法. 它是对对象行为的定义,也是对功能的规范. 在写示例之前我给大家说下@required和@optional这两个关键 ...

  4. ceph启动脚本

    放在/etc/init.d/目录下,用法如下: root@u253:~# /etc/init.d/ceph === mon.a === usage: /etc/init.d/ceph [options ...

  5. 面试题之String str = new String("abc"); 创建了几个对象

    今天去面试的时候碰到了这个问题:String str = new String("abc"); 创建了几个对象,回来自己研究并查阅资料才发现答错了..网上的争论不少,有的说是两个, ...

  6. POJ 3630 Phone List(trie树的简单应用)

    题目链接:http://poj.org/problem?id=3630 题意:给你多个字符串,如果其中任意两个字符串满足一个是另一个的前缀,那么输出NO,否则输出YES 思路:简单的trie树应用,插 ...

  7. Arduino 时钟模块(clock module) DS1306

    http://www.pjrc.com/teensy/td_libs_DS1307RTC.html 下载相关的库程序 连接: DS1306: 1.接3.3V 2.SDA接A4 3.SCL接A5 读取: ...

  8. Jquery对select的操作(附日历天数变化代码)

    转载请注明出处. 逃不开传统的四种操作:增.删.改.查. <四处搜刮了jquery对select操作的代码,汇集一下,方便以后查看.日历天数变化代码为原创.> [增]: $("# ...

  9. php学习笔记(3)

    1.计数器 <?php /* simple access counter for php3 (c)1998 David W. Bettis dbettis@eyeintegrated.com m ...

  10. [LeetCode]题解(python):129-Sum Root to Leaf Numbers

    题目来源: https://leetcode.com/problems/sum-root-to-leaf-numbers/ 题意分析: 一棵树,从跟节点到叶子节点比如1->2那么这个叶子代表12 ...