OC 字典(可變不可變都有 )

2021-07-16 10:59:34 字數 3541 閱讀 4725

字典 nsdictionary

1.概念字典是關鍵字'key'及其定義的值(value)所構成的集合,即它是由key-value組成的鍵值對的集合。

'key'一般是'nsstring'型別的,『value』是oc中任意物件。對於字典來講,我們就是通過'key'來訪問 'value'。

2.為什麼在有了陣列之後還需要字典?在有大量的資料或者頻繁的查詢的時候,使用字典效率更高。

因為字典才用鍵查詢的優化儲存方式。

建立乙個空的字典

nsdictionary *dictionary1 = [[nsdictionary alloc]init];

nsdictionary *dictionary2 = [nsdictionary dictionary];

建立乙個只有乙個鍵值對

nsdictionary *dictionary3 = [nsdictionary dictionarywithobject:@"leee" forkey:@"name"];
//建立乙個只有多個鍵值對

nsdictionary *dictionary4 = [nsdictionary dictionarywithobjectsandkeys:@"leee",@"name",@25,@"age",@"gz",@"address", nil];
//字典裡面存放的元素要都是物件型別才行。如果基本資料型別,要先把基本資料型別進行哦封裝,然後放到這些集合中去。

nsdictionary *dictionary5 = [nsdictionary dictionarywithdictionary:dictionary4];

nslog(@"%@",dictionary5);

//新語法建立字典

nsdictionary *dictionary6 = @{};
//新語法建立直郵乙個鍵值對的語法

nsdictionary *dictionary7 = @;
//新語法建立有多個鍵值對的字典

nsdictionary *dictionary8 = @;
//從本地和從網路(從網路要用nsurl urlwithstring:)

nsdictionary *dictionary9 = [nsdictionary dictionarywithcontentsoffile:@""];

nsdictionary *dictionary10 = [nsdictionary dictionarywithcontentsofurl:[nsurl urlwithstring:@""]];

字典中鍵值對的數量

nsuinterger count = dictionary.count;
如何訪問字典

通過key訪問字典中的值

nsstring *name = [dictionary4 objectforkey:@"name"];
新語法

nsstring *newname = dictionary4 [@"name"];
如何遍歷字典中所有的key/value

表示字典裡所有的key

nsarray *keysarray = dictionary4.allkeys;

nsarray *valuesarray = [dictionary4.allvalues];

使用for 迴圈來列印 key=value

for (int i =0;i forin

for (nsstring *key in keysarray)

使用列舉器遍歷

nsenumerator *enumerator = [keysarray objectenumerator];

id key

while (key =[enumerator nextobject])

nsdictionary *dictionary = @;

for(nsstring *str in dictionary.allkeys)

建立乙個空的字典

nsmutabledictionary *mdictionary1 = [nsmutabledictionary dictionary];
建立乙個有乙個鍵值對的可變字典

nsmutabledictionary *mdictionary2 = [nsmutabledicitionary dictionarywithobject:@"leee", forkey:@"name"];
建立乙個有多個鍵值對的可變字典

nsmutablediction *mdictionary3 = [nsmutabledictionary dictionarywithobjectandkeys:@"leee",@"name",@25,@"age",@"gz",@"address",nil];
通過另乙個字典建立乙個字典

nsmutabledictionary *mdictionary4 = [nsmutabledictionary dictionarywithdictionary:mdictionary3];
可變字典獨有的初始化方法

nsmutabledictionary *mdictionary5 = [nsmutabledictionary dictionarywithcapacity:10];
操作字典

[mdictionary5 setvalue:@"leee" forkey:@"name"];

[mdictionary5 setvalue:@25 forkey:@"name"];

改(如果原來的字典中已經有了akey這個鍵,那麼這次新加的值就會覆蓋原來關鍵(鍵)akey對應的值

[mdictionary5 setvalue:@"sb" forkey:@"name"];
mdictionary5[@」name」] = @」leo」;

刪除指定key 的物件

[mdictionary5 removeobjectforkey:@"name"];

[mdicitonary5 removeallobjects];

找出相同值的鍵

nsmutabledicitonary *mdic8 = [nsmutabledicitonary dictionarywithobjectandkeys:@"leee",@"name1",@22,@"age",@"gz",@"address",@"leee",@"name2",@"leee",@"name3",nil];

oc75 不可變字典NSDictionary

nsdictionary import int main int argc,const char ar 注意 key和value 是一一對應 nsdictionary dict2 nsdictionary dictionarywithobjects lnj 30 1.75 forkeys name ...

不可變字典和可變字典的誤區

突然想著set乙個值進去,為了方便點,在同乙個物件中拿值,結果竟然崩潰,百思不得其解,後來通過property的方式傳值過去。第二天早上仔細研究了下 原先的流程是一開始在didload裡面建立了可變字典 void viewdidload super viewdidload mtableview se...

可變與不可變

元組 tuple 元組一旦被建立就不能被修改,採用逗號和圓括號 來表示。列表推導式 可變與不可變 序列型別 是否有序 是否可變 列表有序可變 元組有序 不可變 字串有序 不可變 字典無序可變 集合無序 不可變不管是可變還是不可變的序列型別 1 分片必定產生新的序列 2 號在等號右邊,必定產生新的序列...