Objective,object

來源:互聯網
上載者:User

Objective,object

在進行資料處理的時候,因為物件類型的不同, 並不能進行相應的資料處理,所以必須要進行資料類型的轉換,這也就是NSNumber,NSValue這兩類值對象出現的原因。

簡而言之,NSNumber就是實現基礎資料型別 (Elementary Data Type)與物件類型的互相轉換,而NSValue,則是實現結構體對象與物件類型的互相轉換。

NSNumber因為是實現基礎資料型別 (Elementary Data Type)與物件類型的互相轉換,所以,必須是要有資料類型,而int ,char,BOOL,Float,Long,Integer等等等~都可以進行相應的轉換

//1.將基礎資料型別 (Elementary Data Type)轉換為NSNumber *類型的對象

    int number = 10;

    NSNumber *num = [NSNumber numberWithInt:number];

 //2.將NSNumber *類型的對象還原成基礎資料型別 (Elementary Data Type)

    int result = [num intValue];

其它的類型使用方法也是相同的方法,比如BOOL

    BOOL isYes = YES;

    NSNumber *isY = [NSNumber numberWithBool:isYes];

 

NSValue也是同樣的道理

//1.將結構體轉換成值對象

    NSRange range = {5,8};

    NSValue *value = [NSValue valueWithRange:range];

/2.將對象轉換成原有的結構體

    NSRange newRange = [value rangeValue];

    //結構不能直接列印,用NSStringFromRange結構體轉換成字串打出來

    NSLog(@"%@",NSStringFromRange(newRange));  

 

注意:當然這隻是單純的介紹一樣方法的使用,在做項目或者是做一些資料處理,類型轉換時還需要注意當時的形式來使用。比如NSNumber可以實現大小的比較,並不是像字串那樣逐字逐的比較。

    NSNumber *number1 = [NSNumber numberWithInt:17];

    NSNumber *number2 = [NSNumber numberWithInt:123];

    NSComparisonResult numberReslu = [number1 compare:number2];

    NSLog(@"numberResult is %ld",numberReslu);//最後比較的結果是 - 1,而不是1,如果是字串比較的話則是1.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.