zoukankan      html  css  js  c++  java
  • NSNumber的比较方法

    在NSNumber中, 我们要如何对比两个基本数据类型对象是否相等呢? 我们可以用一些方法来实现.

    涉及的方法:

    BOOL:

    isEqualToNumber:通过返回一个BOOL值, 判断前者基本数据类型对象是否和后者基本数据类型对象相等.

    compare:通过返回一个NSComparisonResult值, 判断前者基本数据类型对象是否大于, 小于或者等于后者基本数据类型对象.

    NSOrderedAscending: 表示前者小于后者.

    NSOrderedSame: 表示两者相等.

    NSOrderedDescending: 表示前者大于后者.

    PS: 大家看到例子中有一个intNumber对象和floatNumber对比或许会感觉到奇怪, 其实在OC上这样子的比较是允许的, 因为它们都属于同一个类簇里面, 在同一类簇里的类型都是可以相互比较的.

    下面我们来看看例子:

    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            NSNumber *intNumber = [[NSNumber alloc]initWithInt:10];
            NSNumber *intNumber2 = [[NSNumber alloc]initWithInt:10];
            NSNumber *floatNumber = [[NSNumber alloc]initWithFloat:3.14f];
            
            //下面是通过一个BOOL的方法进行大小对比, 看它们是否相等.
            //顺便说一下, OC中的BOOL判断方法和C语言的不太一样, 如果两个数值是相等的才返回1
            //其他全部返回0;
            BOOL ret = [intNumber isEqualToNumber:intNumber2];
            NSLog(@"%d", ret);
            
            //这里的对比可以夸类型对比, 虽然我们知道它们不相等的.
            BOOL ret2 = [intNumber isEqualToNumber:floatNumber];
            NSLog(@"%d", ret2);
            //这里我们一看就是intNumber和intNumber2是不相等的, 所以返回的数值是0
            
            //也可以使用判断语句
            //NSOrderedAscending是前者小于后者的意思.
            if([intNumber compare:intNumber2] == NSOrderedAscending){
                NSLog(@"<");
                
            }
            //NSOrderedSame是指左右两边都相等.
            else if([intNumber compare:intNumber2] == NSOrderedSame){
                NSLog(@"==");
            }
            //NSOrderedDescending是只前者大于后者的意思.
            else if([intNumber compare:intNumber2] == NSOrderedDescending){
                NSLog(@">");
            }
        }
        return 0;
    }

    输出的结果:

    2014-10-13 21:51:38.824 ContrastNSNumber[6911:303] 1
    2014-10-13 21:51:38.825 ContrastNSNumber[6911:303] 0
    2014-10-13 21:51:38.826 ContrastNSNumber[6911:303] intNumber == intNumber2
    Program ended with exit code: 0
  • 相关阅读:
    C#操作指针
    C#使用指针表达式
    C#指针转换
    C#基础指针类型
    线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(二)
    线性规划中的单纯形法与内点法(原理、步骤以及matlab实现)(一)
    201521123079 《Java程序设计》第1周学习总结
    201521123069 《Java程序设计》 第2周学习总结
    201521123069 《Java程序设计》第1周学习总结
    201521123004 《Java程序设计》第2周学习总结
  • 原文地址:https://www.cnblogs.com/iOSCain/p/4023180.html
Copyright © 2011-2022 走看看