美文网首页
数据解析之NSNumber(US)

数据解析之NSNumber(US)

作者: Harely | 来源:发表于2019-12-24 09:57 被阅读0次

服务器返回JSON字段为 null 或 nil

字符串转化为NSNumber

//字符串转为NSNumber对象类型
//思路:先将字符串转为NSInteger类型,再通过NSNumber的创建方法@(数字)即可实现
self.personID = @(@"1234.789".doubleValue);
NSLog(@"字符串赋值: %@", self.personID);

self.personID = @(3456.89);
NSLog(@"数字赋值: %@", self.personID);

打印:

2019-12-24 10:12:56.176685+0800 Test[2109:62203] 字符串赋值: 1234.789
2019-12-24 10:13:02.520301+0800 Test[2109:62203] 数字赋值: 3456.89



NSNumber 和 null 的判断

NSString *pID;
NSLog(@"pID的值:%@", pID);
//对null进行判断
if ([pID isEqualToString:@""]) {
    NSLog(@"--->> 1");
}

if (pID == nil) {
    NSLog(@"--->> 2");
}

if (!pID) {
    NSLog(@"--->> 3");
}

if ([pID isEqualToString:@"(null)"]) {
     NSLog(@"--->> 4");
}

打印:

2019-12-24 10:13:12.446845+0800 Test[2109:62203] --->> 2
2019-12-24 10:13:15.857846+0800 Test[2109:62203] --->> 3
2019-12-24 10:13:21.996405+0800 Test[2109:62203] --->> 5



NSNumber 和 null的解析

NSString *pID;  //打印为:null
self.personID = @(pID.intValue);
NSLog(@"pID转化为NSNumer的值:%@", self.personID);

打印:

2019-12-24 10:13:27.206614+0800 Test[2109:62203] pID转化为NSNumer的值:0

  服务器返回的数值可能为字符串数值类型默认值为null,为了防止崩溃可以将其设置为NSNumber类型,然后转化处理。


精度格式

//String 使用 as 转化为 NSString
//NSString 转化为 Double
//Double 转化为 NSNumber
let number1 = NSNumber.init(value: ("18513677.8081993109" as NSString).doubleValue)
let number = NSNumber.init(value: ("18513677.8081993109" as NSString).doubleValue / 1000)

//创建一个NumberFormatter对象
let numberFormatter = NumberFormatter()
//设置number显示的样式
numberFormatter.numberStyle = .none //四舍五入的整数

numberFormatter.maximumIntegerDigits = 8    //设置最大整数位数(超过的直接截断)
numberFormatter.minimumIntegerDigits = 2    //设置最小整数位数(不足的前面补0)

numberFormatter.maximumFractionDigits = 2   //设置小数点后最多3位
numberFormatter.minimumFractionDigits = 2   //设置小数点后最少2位(不足补0)
//numberFormatter.usesGroupingSeparator = true //设置用组分隔
//格式化
let format = numberFormatter.string(from: number) ?? "0.00"

print("原始值 = \(number1)")
print("格式化结果 = \(format)")

打印:
原始值 = 18513677.80819931
格式化结果 = 18513.68

若是想多位的计算精度,请看这里


参考资料:
NSNumber 格式化显示
NSNumberFormatter 数字格式化 US
json解析出现的null问题 US
关于(null)和 NULL ,你真的注意过吗? US
服务器返回的数据,该怎么接收(int,NSNumber)US

相关文章

网友评论

      本文标题:数据解析之NSNumber(US)

      本文链接:https://www.haomeiwen.com/subject/cfyxoctx.html