概述
刚开始用oc没多久,直接把NSNumber和int类型比较了,结果会有3种,大于小于或者等于,但是哈哈,果然出错了
就像这样
NSNumber *number = self.remoteConfig[@"start_page_show"].numberValue;
int radom = arc4random() % 100;
if (radom < number){
//do
}
一气呵成的写完这段代码,并没有编译问题和报错,可是这简单的比较运行结果总是不达人意
分析一下
于是我检查了一下上面代码,发现了比较那段被标注为黄色警告(App Code ide)。应该是NSNumber为int包装类型,就像java的Integer。NSNumber和int直接比较就出现问题,可大可小可等于。
随即我用ide提示,发现了[number intValue]解决问题
修改为
if (radom < [number intValue]){
//do
}
最后
还发现NSNumber有个integerValue方法,返回一个NSInteger,搞得还以为NSInteger是int的包装对象,其实NSInteger与int的区别是NSInteger会通过系统的位数来返回这个整型数据的可用最大值,苹果官方推荐使用NSInteger,不过没有int写起来方便了
还有
NSNumber既然作为对象,自然会有一些对象方法比较大小啦
-(BOOL) isEqualToNumber:
- (NSComparisonResult)compare:(NSNumber *)otherNumber;
不过看着好麻烦,代码也不好读,还是用int基本数据类型的 > = < 吧
最后
以上就是悲凉发箍为你收集整理的NSNumber与int基本数据类型的比较的全部内容,希望文章能够帮你解决NSNumber与int基本数据类型的比较所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复