以ObjectiveC為例,就是NSDictionary,在這邊稍微說明一下該怎麼用
透過Key來存取Object,有點像陣列,但是陣列是透過Index(NSUInteger)來存取,
而Dictionary的Key可以用任意的形態,但是通常是用字串,此外要特別注意的一點,
陣列有順序(0~N),而Dictionary卻不保證有順序。
透過Key來存取Object,有點像陣列,但是陣列是透過Index(NSUInteger)來存取,
而Dictionary的Key可以用任意的形態,但是通常是用字串,此外要特別注意的一點,
陣列有順序(0~N),而Dictionary卻不保證有順序。
NSMutableDictionary *dict = [NSMutableDictionary new];
//宣告一個可變動的Dictionary
NSString *strs = @"我是String哦";
NSNumber *year = [NSNumber numberWithInt:2008];
NSMutableArray *arrays = [NSMutableArray new];
[arrays addObject:@"a"];
[arrays addObject:@"b"];
[arrays addObject:@"c"];
//宣告字串 數字 陣列等等放入NSMutableDictionary中
[dict setObject:strs forKey:@"字串"];
[dict setObject:year forKey:@"年份"];
[dict setObject:arrays forKey:@"陣列"];
//利用setObject將這三個物件存入NSMutableDictionary中;Key為"字串","年份","陣列"
NSLog(@"%@",[dict objectForKey:@"字串"]);
//利用objectForKey方法來取出物件
NSLog(@"%@",dict[@"年份"]);
//也能用[]來取出,有點像陣列
NSLog(@"%@",[[dict objectForKey:@"陣列"]objectAtIndex:0]);
//陣列取出來也能馬上利用
輸出結果:
2014-12-07 22:29:15.210 HelloNSDictionary[4261:109453] 我是String哦
2014-12-07 22:29:15.210 HelloNSDictionary[4261:109453] 2008
2014-12-07 22:29:15.210 HelloNSDictionary[4261:109453] a
NSArray *array1 = [dict objectForKey:@"陣列"];
//如果覺得直接用有點亂,可以考慮將物件取出來在使用
Dictionary有一些滿有用的方法,可以讓你更順利的處理一些事情
allKeys -> 回傳一個陣列,裡面包含Dictionary裡面所有的key
NSString *str1 = @"我是str1哦";
NSString *str2 = @"我是str2哦";
NSString *str3 = @"我是str3哦";
NSString *str4 = @"我是str4哦";
//建立四個String物件
[dict setObject:str1 forKey:@"字串1"];
[dict setObject:str2 forKey:@"字串2"];
[dict setObject:str3 forKey:@"字串3"];
[dict setObject:str4 forKey:@"字串4"];
//將四個String加入到NSMutableDictionary中
NSArray *keys = [dict allKeys];
//allKeys方法->會回傳字典內所有的Key
for (NSString* key in keys) {
NSLog(@"%@",key);
}
//利用forin試著印出來
2014-12-07 22:59:17.642 HelloNSDictionary[4487:122128] 字串2
2014-12-07 22:59:17.643 HelloNSDictionary[4487:122128] 字串3
2014-12-07 22:59:17.643 HelloNSDictionary[4487:122128] 字串4
2014-12-07 22:59:17.643 HelloNSDictionary[4487:122128] 字串1
可以看到印出來的Key的確是我們加入的四個,但是特別注意的是順序卻跟當初加入的不太一樣,這就是Dictionary的特性,並不保證順序,但是如果透過這個Key陣列來存取的話,只要整理這個陣列,就能排序成自己要的樣子。
NSLog(@"%@",[dict objectForKey:keys[0]]);
//透過key Array來存取NSMutableDictionary
NSLog(@"%@",[dict objectForKey:[dict allKeys][0]]);
//如果對括號的掌握度夠好,也能直接利用allKeys方法來存取
2014-12-07 23:05:56.667 HelloNSDictionary[4540:124827] 我是str2哦
2014-12-07 23:05:56.668 HelloNSDictionary[4540:124827] 我是str2哦
還有一個allValues,印出字典內所有的值。
NSArray *values = [dict allValues];
//allValues方法->回傳字典內所有的Values
for (NSString* value in values) {
NSLog(@"%@",value);
}
//利用forin試著印出來
2014-12-07 23:09:41.950 HelloNSDictionary[4592:126604] 我是str2哦
2014-12-07 23:09:41.951 HelloNSDictionary[4592:126604] 我是str3哦
2014-12-07 23:09:41.951 HelloNSDictionary[4592:126604] 我是str4哦
2014-12-07 23:09:41.951 HelloNSDictionary[4592:126604] 我是str1哦
可以看一下這篇 Key-Value-Coding
沒有留言:
張貼留言