數(shù)據(jù)類(lèi)型

NSNumber

  • NSNumber 是一個(gè)類(lèi)贾陷。OC中提供了NSNumber類(lèi)來(lái)將基本數(shù)據(jù)類(lèi)型“包裝”成數(shù)字對(duì)象队橙,這樣我們就可以將基本數(shù)據(jù)類(lèi)型當(dāng)做對(duì)象來(lái)處理候味。同樣也可以將包裝后的對(duì)象還原成基本數(shù)據(jù)類(lèi)型抒寂。
NSNumber的類(lèi)方法
+ (NSNumber *)numberWithChar:(char)value;
+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
+ (NSNumber *)numberWithShort:(short)value;
+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
+ (NSNumber *)numberWithLong:(long)value;
+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
+ (NSNumber *)numberWithLongLong:(long long)value;
+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
+ (NSNumber *)numberWithFloat:(float)value;
+ (NSNumber *)numberWithDouble:(double)value;
+ (NSNumber *)numberWithBool:(BOOL)value;
+ (NSNumber *)numberWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0);
+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0);
NSNumber的實(shí)例方法
//實(shí)例方法 初始化
- (NSNumber *)initWithChar:(char)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithUnsignedChar:(unsigned char)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithShort:(short)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithUnsignedShort:(unsigned short)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithInt:(int)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithUnsignedInt:(unsigned int)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithLong:(long)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithUnsignedLong:(unsigned long)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithLongLong:(long long)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithUnsignedLongLong:(unsigned long long)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithFloat:(float)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithDouble:(double)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithBool:(BOOL)value NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithInteger:(NSInteger)value NS_AVAILABLE(10_5, 2_0) NS_DESIGNATED_INITIALIZER;
- (NSNumber *)initWithUnsignedInteger:(NSUInteger)value NS_AVAILABLE(10_5, 2_0) NS_DESIGNATED_INITIALIZER;
  • 使用 @(someThing);// 快速裝箱,自動(dòng)判斷類(lèi)型。
NSNumber *number = @(1);
將基本類(lèi)型數(shù)據(jù)封裝到NSNumber中后衔掸,通過(guò)下面的實(shí)例方法重新獲取它
NSNumber *myNumber = [NSNumber numberWithLong:0xabcdef];
NSNumber *floatnumber = [NSNumber numberWithFloat:12.33];
NSNumber *intNumber = [NSNumber numberWithInt:100];
NSNumber *doublenumber = [NSNumber numberWithDouble:12345e+15];
NSNumber *charNumber = [NSNumber numberWithChar:'X'];
int myInt = [intNumber intValue]; 
float myFloat = [floatnumber floatValue];
double myDouble = [doublenumber doubleValue];
char myChar = [charNumber charValue]烫幕;
  • 因?yàn)镺C的集合當(dāng)中存儲(chǔ)的數(shù)據(jù)必須是OC對(duì)象俺抽。舉個(gè)例子
NSMutableArray *myArray = [[NSMutableArray alloc] init ];
[myArray addObject: 6 ];

上面的寫(xiě)法編譯器會(huì)報(bào)錯(cuò)敞映。解決方法就是把'6'包裝成一個(gè)NSNumber對(duì)象。

NSMutableArray *myArray = [[NSMutableArray alloc] init ];
[myArray addObject:[NSNumber numberWithInt:6] ];
NSLog(@"array content is %@", myArray);
  • NSNumber轉(zhuǎn)成NSString類(lèi)型
// 下面 A是NSNumber類(lèi)型 B是NSString類(lèi)型
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
B = [numberFormatter stringFromNumber:A];
  • 用NSNumber排序
NSNumber *number1 = [NSNumber numberWithInteger:13];
NSNumber *number2 = [NSNumber numberWithInteger:14];
NSComparisonResult result = [number1 compare:number2];
    
    if (result == NSOrderedAscending) {
        NSLog(@"升序");//number2 比 number1 大
    }else if (result == NSOrderedSame){
        NSLog(@"一致");
    }else if (result == NSOrderedDescending){
        NSLog(@"降序");
    }else{
        NSLog(@"error");
    }
  • 用NSNumber判斷是否一致
NSNumber *number1 = [NSNumber numberWithInteger:13];
NSNumber *number2 = [NSNumber numberWithInteger:14];
    
    if ([number1 isEqualToNumber:number2]) {
        NSLog(@"same");
    }else{
        NSLog(@"nonono");
    }

int磷斧、NSInteger振愿、NSUInteger、NSNumber之間的區(qū)別和聯(lián)系

  • int : 當(dāng)使用int類(lèi)型定義變量的時(shí)候弛饭,可以像寫(xiě)C程序一樣去使用冕末。當(dāng)你不知道程序運(yùn)行在哪種處理器架構(gòu)時(shí),你最好使用NSInteger侣颂,因?yàn)樵谟锌赡躨nt在32位系統(tǒng)中只是int類(lèi)型档桃,而在64位系統(tǒng),int可能變成long型憔晒。除非不得不使用int/long型藻肄,否則推薦使用NSInteger。
  • NSInteger/NSUInteger是一種動(dòng)態(tài)定義的類(lèi)型拒担,在不同的設(shè)備嘹屯,不同的架構(gòu),有可能是int類(lèi)型从撼,有可能是long類(lèi)型州弟。NSUInteger是無(wú)符號(hào)的,即沒(méi)有負(fù)數(shù)低零,NSInteger是有符號(hào)的婆翔。
  • NSInteger是基礎(chǔ)類(lèi)型,NSNumber是一個(gè)類(lèi)掏婶,如果需要存儲(chǔ)一個(gè)數(shù)值啃奴,直接使用NSInteger是不行的,因?yàn)镺C的集合當(dāng)中存儲(chǔ)的數(shù)據(jù)必須是OC對(duì)象气堕。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纺腊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子茎芭,更是在濱河造成了極大的恐慌揖膜,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梅桩,死亡現(xiàn)場(chǎng)離奇詭異壹粟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)趁仙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)洪添,“玉大人,你說(shuō)我怎么就攤上這事雀费「缮荩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵盏袄,是天一觀(guān)的道長(zhǎng)忿峻。 經(jīng)常有香客問(wèn)我,道長(zhǎng)辕羽,這世上最難降的妖魔是什么逛尚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮刁愿,結(jié)果婚禮上绰寞,老公的妹妹穿的比我還像新娘。我一直安慰自己铣口,他們只是感情好滤钱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著枷踏,像睡著了一般菩暗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上旭蠕,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天停团,我揣著相機(jī)與錄音,去河邊找鬼掏熬。 笑死佑稠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旗芬。 我是一名探鬼主播舌胶,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疮丛!你這毒婦竟也來(lái)了幔嫂?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤誊薄,失蹤者是張志新(化名)和其女友劉穎履恩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體呢蔫,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡切心,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绽昏。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡协屡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出全谤,到底是詐尸還是另有隱情肤晓,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布啼县,位于F島的核電站材原,受9級(jí)特大地震影響沸久,放射性物質(zhì)發(fā)生泄漏季眷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一卷胯、第九天 我趴在偏房一處隱蔽的房頂上張望子刮。 院中可真熱鬧,春花似錦窑睁、人聲如沸挺峡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)橱赠。三九已至,卻和暖如春箫津,著一層夾襖步出監(jiān)牢的瞬間狭姨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工苏遥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饼拍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓田炭,卻偏偏與公主長(zhǎng)得像师抄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子教硫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容