Objective-C中NSNumber與NSDictionary的用法簡介
NSNumber的常用方法
在Objective-c中有int的數(shù)據(jù)類型,那為什么還要使用數(shù)字對(duì)象NSNumber?這是因?yàn)楹芏囝悾ㄈ鏝SArray)都要求使用對(duì)象,而int不是對(duì)象。
NSNumber就是數(shù)字對(duì)象我們可以使用NSNumber對(duì)象來創(chuàng)建和初始化不同類型的數(shù)字對(duì)象。
NSNumber
+ (NSNumber *)numberWithInt:(int)value;
+ (NSNumber *)numberWithDouble:(double)value;
- (int)intValue;
- (double)doubleValue;
.....................(對(duì)于每個(gè)基本類型,類方法都為這它分配了一個(gè)NSNumber對(duì)象,并將其設(shè)置為指定的值,這些方法都是以numberWith開始的,之后是類型,如numberWithFloat,numberWithLong,numberWithInteger.....)
包裝后取出來的方法如下:
下面就拿int做個(gè)demo:
void number() {
// 將int類型的10 包裝成 一個(gè)NSNumber對(duì)象
NSNumber *number = [NSNumber numberWithInt:10];
NSLog(@"number=%@", number);
NSMutableArray *array = [NSMutableArray array];
// 添加數(shù)值到數(shù)組中
[array addObject:number];
// 取出來還是一個(gè)NSNumber對(duì)象,不支持自動(dòng)解包(也就是不會(huì)自動(dòng)轉(zhuǎn)化為int類型)
NSNumber *number1 = [array lastObject];
// 將NSNumber轉(zhuǎn)化成int類型
int num = [number1 intValue];
NSLog(@"num=%i", num);
}
NSDictionary一些常用用法
NSArray * skyAArrays = [NSArray arrayWithObjects:@"A天空1號(hào)",@"A天空2號(hào)",@"A天空3號(hào)",nil];
NSArray * skyBArrays = [NSArray arrayWithObjects:@"B天空1號(hào)",@"B天空2號(hào)",@"B天空3號(hào)",nil];
NSArray * skyCArrays = [NSArray arrayWithObjects:@"C天空1號(hào)",@"C天空2號(hào)",@"C天空3號(hào)",nil];
// NSArray * skyArray = [NSArray arrayWithObjects:skyAArrays,skyBArrays,skyCArrays, nil];
//字典中所有的key
NSArray * keys = [NSArray arrayWithObjects:@"name",@"sex",@"age",nil];
//字典中所有跟key對(duì)應(yīng)的value
NSArray * values = [NSArray arrayWithObjects:@"liuhui",@"男",[NSNumbernumberWithInt:36],nil];
//創(chuàng)建字典對(duì)象方法1
NSDictionary * myDic = [[NSDictionary alloc]initWithObjects:values forKeys:keys];
NSLog(@"my dic = %@",myDic);
// 創(chuàng)建字典對(duì)象方法2
NSDictionary * yourDic = [[NSDictionary alloc] initWithObjectsAndKeys:skyAArrays,@"A",skyBArrays,@"B",skyCArrays,@"C",nil];
NSLog(@"your dic = %@",yourDic);
NSLog(@"%@",[yourDic objectForKey:@"A"]);
// - (NSArray *)allKeys; 返回的是 NSArray類型,方便用 objectAtIndex取出一個(gè)個(gè)key
NSLog(@"%@",[yourDic allKeys]);
NSLog(@"%@",[yourDic allValues]);
//添加數(shù)據(jù)(setObject 一般沒有一種key才添加,有同名的key而用這種方法,會(huì)覆蓋掉),注意:id key 是成對(duì)出現(xiàn)的
[mutableDictionary setObject:@"good lucky"forKey:@"why"];
[mutableDictionary setObject:@"bye bye" forKey:@"how"];
//刪除指定鍵值的數(shù)據(jù)
[mutableDictionary removeObjectForKey:..];
//刪除所有數(shù)據(jù)
[mutableDictionary removeAllObjects];
//字典的普通遍歷(無序)
for (int i =0; i < [yourDic count]; i++) {
NSLog(@"key = value <====> %@ = %@",[[yourDic allKeys] objectAtIndex:i],[yourDic objectForKey:[[yourDic allKeys]objectAtIndex:i]]);
}
// 字典的快速遍歷 取出來的obj一定是key
for (id obj in yourDic) {
NSLog(@"%@",obj);
id value = [yourDic objectForKey:obj];
NSLog(@"%@",value);
}
相關(guān)文章
iOS 16 CocoaAsyncSocket 崩潰修復(fù)詳解
這篇文章主要為大家介紹了iOS 16 CocoaAsyncSocket 崩潰修復(fù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01iOS sqlite對(duì)數(shù)據(jù)庫的各種操作(日常整理全)
在IOS中使用Sqlite來處理數(shù)據(jù)。如果你已經(jīng)了解了SQL,那你可以很容易的掌握SQLite數(shù)據(jù)庫的操作。本文給大家介紹iOS sqlite對(duì)數(shù)據(jù)庫的各種操作,需要的朋友參考下吧2016-03-03講解Java中如何構(gòu)造內(nèi)部類對(duì)象以及訪問對(duì)象
這篇文章主要介紹了講解Java中如何構(gòu)造內(nèi)部類對(duì)象以及訪問對(duì)象,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09IOS 應(yīng)用程序管理的實(shí)現(xiàn)
這篇文章主要介紹了IOS 應(yīng)用程序管理的實(shí)現(xiàn)的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10iOS開發(fā)網(wǎng)絡(luò)篇—實(shí)現(xiàn)大文件的多線程斷點(diǎn)下載
iOS開發(fā)中經(jīng)常會(huì)用到文件的下載功能,這篇文章主要介紹了iOS開發(fā)網(wǎng)絡(luò)篇—實(shí)現(xiàn)大文件的多線程斷點(diǎn)下載,今天咱們來分享一下思路。2016-11-11react-native中AsyncStorage實(shí)例詳解
這篇文章主要介紹了react-native中AsyncStorage實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03ios 實(shí)現(xiàn)倒計(jì)時(shí)的兩種方式
這篇文章主要介紹了ios實(shí)現(xiàn)倒計(jì)時(shí)的兩種方式,第一種方式使用NSTimer來實(shí)現(xiàn),第二種方式使用GCD來實(shí)現(xiàn)。具體內(nèi)容詳情大家參考下本文2017-01-01