Foundation 之 NSNumber

NSNumber


引入:

基本數據類型變爲對象

     例如使用基本數據類型:NSInteger a = 9;
     但是有時候使用基本數據類型是不方便的,比如說需要將基本類型變量裝到數組裏,但數組裏裝的都是對象的地址。或者放入字典中也不可行。
     所以需要將基本數據類型變爲對象,讓我們能夠裝入數組或者字典當中,讓我們能夠給他們發送消息,即調用方法,如排序。

專門用來裝基礎數據類型的對象類NSNumber

      NSNumber的對象可以是各種各樣數字的內容。
      比如:
      NSNumber * intNumber = [[NSNumber alloc] initWithInt:5];  // 整型
      NSNumber * floatNumber = [[NSNumber alloc] initWithFloat:3.14f];  // 浮點型
      NSNumber * doubleNumber = [[NSNumber alloc] initWithDouble:3.14];  // 雙精度浮點型
      NSNumber * charNumber = [[NSNumber alloc] initWithChar:'A'];  // 字符型
      等等……
      注意:上面這幾個對象是不同的對象。

NSNumber是一個類簇

      有一些類聚合在一起形成了一些類簇,從表面上看來是一個類,實際上,它可以創建各種類的對象。
      可以通過NSNumber調用不同的初始化方法創造出不同的對象。
      一個super類,一個與衆不同的類,一個超級的類。

      NSNumber和UIButton都是典型的類簇,雖然使用同一個類名,但是可以創建不同的對象。

      舉例:貓狗和動物。


NSNumber比較方法

      NSNumber * intNumber1 = [[NSNumber alloc] initWithInt:5];
      NSNumber * intNumber2 = [[NSNumber alloc] initWithInt:6];
      BOOL ret = [intNumber1 isEqualToNumber:intNumber2];  // 比較是否相等。

      BOOL ret = [intNumber1 isEqualToNumber:charNumber];  

                                                            // 比較是否相等(不同類型的對象也可以作比較)


      除了比較是否相等之外,兩個NSNumber對象也可以像普通的基本變量一樣去比較它們的大小關係:
        if([intNumber1 compare:intNumber2] == NSOrderedAscending){
                NSLog(@"intNumber1 < intNumber2");
        }else if([intNumber1 compare:intNumber2] == NSOrderedSame) {
                NSLog(@"intNumber1 == intNumber2");
        }else if([intNumber1 compare:intNumber2] == NSOrderedDescending) {
                NSLog(@"intNumber1 > intNumber2");
        }


獲得原始的基本類型的數據

      既然把基本的數據存到了對象當中,如果想獲得原始的基本類型的數據:
      調用intNumber對象的intValue方法。
      如:
      NSLog(@"%d", [intNumber intValue]);
      NSLog(@"%f", [floatNumber floatValue]);
      NSLog(@"%f", [doubleNumber doubleValue]);
      NSLog(@"%c", [charNumber charValue]);

更簡潔的理解和使用方法

      // 自動創建NSNumber對象,只要在數字前加一個@,

                              編譯器將會識別出它是何種類型的數字(double,float,character,boolean等)

                NSNumber * number = @123; 
      // 獲取對象的值
                int value = [number intValue];

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章