#系列:ios開發-nsdictionary
繼續介紹oc中的另外一種資料型別 字典:nsdictionary
首先nsdictionary和陣列是差不多的 區別是陣列的每一項就是每一下,但是字典的每一項是兩個東西key和value 這兩個是一一對應的,即key:value的形式 另外字典裡面只能儲存object型別的,基礎型別的資料是不能存的,比如乙個int型的資料 我們就可以給它做轉換,轉成nsstring或者nsnumber才能儲存
接下來我們進到這個類裡面看看
也證實我剛才說的他和nsarray是相似的, 因為這個類在定義的時候就引用了nsarray和nsset...
所以我們可以把它也看成是乙個特殊的陣列.當然這樣說也太簡單了....大家理解就行 繼續向下看, 我們看看他的方法等
首先是建立
//建立
nsdictionary *dict1 = @;
nslog(@"dict1 = %@",dict1);
nsdictionary *dict2 = [[nsdictionary alloc]init];
nslog(@"dict2 = %@",dict2);
nsdictionary *dict3 = [[nsdictionary alloc]initwithdictionary:dict1];
nslog(@"dict3 = %@",dict3);
nsdictionary *dict4 = [[nsdictionary alloc]initwithobjectsandkeys:@"value4",@"key4",@"value44",@"key44", nil];
nslog(@"dict4 = %@",dict4);
nsdictionary *dict5 = [[nsdictionary alloc]initwithobjects:@[@"value5",@"value55"] forkeys:@[@"key5",@"key55"]];
nslog(@"dict5 = %@",dict5);
nsdictionary *dict6 = [nsdictionary dictionarywithdictionary:dict1];
nslog(@"dict6 = %@",dict6);
nsdictionary *dict7 = [nsdictionary dictionarywithobjectsandkeys:@"value7",@"key7",@"value77",@"key77", nil];
nslog(@"dict7 = %@",dict7);
nsdictionary *dict8 = [nsdictionary dictionarywithobject:@"value8"
forkey:@"key8"];
nslog(@"dict8 = %@",dict8);
複製**
大家在使用中根據實際情況建立,因為是不可變陣列,所以一遍都是使用第一種,直接賦值,算是偷懶吧... 至於常用方法,我還是舉些例子.具體場景具體使用
//常用方法
//count (字典元素格式 key:value 是一一對應的,所以是算作乙個的)
nslog(@"%ld",[dict7 count]);
//objectforkey: (獲取乙個key對用的值)
nslog(@"%@",[dict7 objectforkey:@"key7"]);
//allkeys (獲取key集合)
nslog(@"%@",[dict7 allkeys]);
//allkeysforobject: (獲取該value對應的所有key key是唯一的 但是value是有可能相同的)
nslog(@"%@",[dict7 allkeysforobject:@"key7"]);
//allvalues (獲取所有value)
nslog(@"%@",[dict7 allvalues]);
//isequaltodictionary (是否和其他字典相同)
nslog(@"%d",[dict7 isequaltodictionary:dict8]);
//keyssortedbyvalueusingselector: (對所有的key進行排序)
nslog(@"%@",[dict7 keyssortedbyvalueusingselector:@selector(compare:)]);
//遍歷
//for
infor (id key in dict7)
//列舉遍歷
nsenumerator *enumerator = [dict7 keyenumerator];
id key = [enumerator nextobject];
while (key)
//block
[dict7 enumeratekeysandobjectsusingblock:^(id _nonnull key, id _nonnull obj, bool * _nonnull stop) ];
複製**
在接下來就是它的子類 可變字典了, 跟字串,陣列一樣,可變型別和不可變的區別是不可變的型別,在建立的時候賦值了,那麼他就不會變了,一直到釋放都是如此, 但是可變型別,是可以改變值的.
nsmutabledictionary 首先是它的建立,因為整合nsdictionary 所以跟之前一樣 繼承的那麼所有的方法都可以拿過來直接用包括建立.... 建立的話就簡單幾個例子吧
//建立
//dictionary
nsmutabledictionary *dict9 = [nsmutabledictionary dictionary];
nslog(@"dict9 = %@",dict9);
//dictionarywithcapacity:
nsmutabledictionary *dict10 = [nsmutabledictionary dictionarywithcapacity:0];
nslog(@"dict10 = %@",dict10);
複製**
常用方法
//常用方法
//setobject:(setvalue:)forkey: (新增某元素)
[dict10 setobject:@"value10"
forkey:@"key10"];
[dict10 setobject:@"value11"
forkey:@"key11"];
[dict10 setobject:@"value12"
forkey:@"key12"];
[dict10 setvalue:@"value13"
forkey:@"key13"];
[dict10 setvalue:@"value14"
forkey:@"key14"];
[dict10 setvalue:@"value15"
forkey:@"key15"];
nslog(@"%@",dict10);
//removeobjectforkey: (移除某乙個key對應的元素)
[dict10 removeobjectforkey:@"key15"];
nslog(@"%@",dict10);
//removeobjectsforkeys (移除一組key對應的元素)
[dict10 removeobjectsforkeys:@[@"key14",@"key13"]];
nslog(@"%@",dict10);
//removeallobjects (移除所有元素)
[dict10 removeallobjects];
nslog(@"%@",dict10);
複製**
再之後我會繼續講nsnumber 和 nsdata 至於為什麼, 在這裡都解釋一下 我們基本上在開發應用的時候都是有很多網路資料的 這些可能是json 可能是xml,也可能是其他的, 但是這些解析之後其實都是類似的字串,陣列,字典,基本資料型別..... 所以我覺得有必要把這些都簡單的過一遍,這樣在解析資料之後, 我們在應用的介面上展示,如何操作這些資料,在底層邏輯上如何處理這些資料等等,我們就會得心應手.
系列:ios開發-前言+大綱 blog.csdn.net/spicyshrimp…
iOS開發系列
ios開發系列 ui 自定義tableview 本章實現效果 我們使用mvc架構來實現自定義tableview,具體的mvc介紹請自行,在本章中不作為主要內容講解。model層 datasource.h import inte ce datasource nsobject nsarray getus...
iOS開發系列文章
ios開發系列的文章,內容循序漸進,包含c語言 objc ios開發以及日後要寫的遊戲開發和swift程式設計幾部分內容。文章會持續更新,希望大家多多關注,如果文章對你有幫助請點贊支援,多謝!ios開發系列 c語言之基礎知識 ios開發系列 c語言之陣列和字串 ios開發系列 c語言之指標 ios開...
自學iOS開發系列 OC(block)
1.block 塊語法,是一種新的語法結構。學習的時候可以模擬於函式指標。2.block和函式指標對比 import 宣告函式 int add int,int int main int argc,char argv nslog d block 3,6 實現函式 int add int a,int b...