字典 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 號在等號右邊,必定產生新的序列...