Swift字典類

在Foundation框架中提供一種字典集合,它是由「鍵-值」對構成的集合。鍵集合不能重複,值集合沒有特殊要求。鍵和值集合中的元素能夠是任何對象,可是不能是nil。Foundation框架字典類也分爲NSDictionary不可變字典和NSMutableDictionary可變字典。
1、NSDictionary類
php

NSDictionary有不少方法和屬性,下面總結其經常使用的方法和屬性。html

initWithDictionary: 構造器,經過Swift的Dictionary建立NSDictionary對象。swift

initWithObjects:forKeys: 構造器,經過鍵集合和值集合建立NSDictionary對象。
count 字典集合的長度。
objectForKey: 經過鍵得到值對象。
allKeys: 返回全部鍵集合。
下面看NSDictionary數組的示例代碼:
數組

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片微信

  1. import Foundation  框架

  2.   

  3.   

  4. let keyString : NSString = "one two three four five"    ①  網站

  5. var keys : NSArray = keyString.componentsSeparatedByString(" ") ②  spa

  6.   

  7.   

  8. let valuestring : NSString = "alpha bravo charlie delta echo"   ③  .net

  9. var values : NSArray = valuestring.componentsSeparatedByString(" ") ④  code

  10.   

  11.   

  12. vardict : NSDictionary = NSDictionary(objects: keys, forKeys:values)    ⑤  

  13.   

  14.   

  15. NSLog("%@", dict.description)   ⑥  

  16.   

  17.   

  18. varvalue:NSString = dict.objectForKey("three") as NSString  ⑦  

  19. NSLog("three = %@", value)  

  20.   

  21.   

  22. varkys = dict.allKeys       ⑧  

  23. for item : AnyObject in kys {   ⑨  

  24. var key = item as NSString  

  25. NSLog("%@ - %@", key, dict.objectForKey(key) as NSString)  

  26. }  



上述代碼第①行和第③行代碼是NSString字符串,字符串由單詞和空格組成。第②行和第④行代碼使用空格分割字符串,返回類型是NSArray數組。
第⑤行代碼實例化NSDictionary對象,objects參數是值數組values,forKeys參數是。第⑥行代碼description屬性是得到字典的內容。第⑦行代碼是經過objectForKey方法讀取鍵對應的值,而且轉換爲NSString類型。
第⑧行代碼dict.allKeys是得到全部的鍵集合kys,第⑨行代碼是遍歷鍵集合kys。
輸出結果以下:

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. 2014-07-06 20:19:07.274 PlaygroundStub_OSX[4110:303] {  

  2. five = echo;  

  3. four = delta;  

  4. one = alpha;  

  5. three = charlie;  

  6. two = bravo;  

  7. }  

  8. 2014-07-06 20:19:07.281 PlaygroundStub_OSX[4110:303] three = charlie  

  9. 2014-07-06 20:19:07.296 PlaygroundStub_OSX[4110:303] one - alpha  

  10. 2014-07-06 20:19:07.300 PlaygroundStub_OSX[4110:303] five - echo  

  11. 2014-07-06 20:19:07.305 PlaygroundStub_OSX[4110:303] three - charlie  

  12. 2014-07-06 20:19:07.308 PlaygroundStub_OSX[4110:303] two - bravo  

  13. 2014-07-06 20:19:07.313 PlaygroundStub_OSX[4110:303] four - delta  



2、NSMutableDictionary類
NSMutableDictionary是NSDictionary的子類,它有不少方法和屬性,下面總結其經常使用的方法和屬性。
-setObject:forKey: 經過鍵和值。
-removeObjectForKey: 按照鍵移除值。
下面看NSDictionary數組的示例代碼:

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. import Foundation  

  2.   

  3.   

  4. var mutable : NSMutableDictionary = NSMutableDictionary()   ①  

  5. // add objects  

  6. mutable.setObject("Tom", forKey: "tom@jones.com")   ②  

  7. mutable.setObject("Bob", forKey: "bob@dole.com")  

  8.   

  9.   

  10. NSLog("%@", mutable.description)  

  11.   

  12.   

  13. var keys = mutable.allKeys  

  14. for item : AnyObject in keys {  

  15. var key = item as NSString  

  16. NSLog("%@ - %@", key, mutable.objectForKey(key) as NSString)  

  17. }  



上述代碼第①行是實例化NSMutableDictionary,第②行代碼是經過setObject方法添加鍵和值。
輸出結果以下:

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. 2014-07-06 20:42:11.596 PlaygroundStub_OSX[4332:303] {  

  2.     "bob@dole.com" = Bob;  

  3.     "tom@jones.com" = Tom;  

  4. }  

  5. 2014-07-06 20:42:11.605 PlaygroundStub_OSX[4332:303] bob@dole.com - Bob  

  6. 2014-07-06 20:42:11.608 PlaygroundStub_OSX[4332:303] tom@jones.com – Tom  



3、NSDictionary與Dictionary之間的關係
NSDictionary與Dictionary之間的關係如同NSArray與Array之間的關係,Swift在底層可以將它們自動地橋接起來,一個NSDictionary對象橋接以後的結果是[NSObject : AnyObject]字典(值爲NSObject 類型,鍵爲AnyObject 類型的Dictionary字典)。
下面咱們看一個使用Dictionary和NSDictionary的示例:

[html] view plaincopy在CODE上查看代碼片派生到個人代碼片

  1. import Foundation               ①  

  2.   

  3.   

  4. let keyString : NSString = "one two three four five"  

  5. let keys : NSArray = keyString.componentsSeparatedByString(" ")  

  6.   

  7.   

  8. let valueString : NSString = "alpha bravo charlie delta echo"  

  9. let values : NSArray = valueString.componentsSeparatedByString(" ")  

  10.   

  11.   

  12. let foundationDict : NSDictionary = NSDictionary(objects:values, forKeys:keys)  ②  

  13.   

  14.   

  15. let swiftDict : Dictionary = foundationDict ③  

  16. println(swiftDict.description)   

  17.   

  18.   

  19. let value: AnyObject? = swiftDict["three"]  ④  

  20. println("three = \(value)")   

  21.   

  22.   

  23. for (key, value) in swiftDict { ⑤  

  24.     println ("\(key) - \(value)")  

  25. }  



代碼第①行是引入Foundation。第②行代碼聲明並初始化NSDictionary字典,第③行代碼是將NSDictionary字典賦值給Dictionary字典,這個過程也發生了類型轉換,不只是NSDictionary到Dictionary的轉換,並且它們的內部元素也發生了轉換。

第④行代碼是從Dictionary字典取three鍵對應的值,它的類型是可選的AnyObject類型,這是由於有可能取不到這個值。第⑤行代碼是遍歷Dictionary字典鍵和值集合。



更多內容請關注國內第一本Swift圖書《Swift開發指南》

本書交流討論網站:http://www.51work6.com/swift.php

歡迎加入Swift技術討論羣:362298485

歡迎關注智捷iOS課堂微信公共平臺

相關文章
相關標籤/搜索