zoukankan      html  css  js  c++  java
  • Swift字典类

    在Foundation框架中提供一种字典集合,它是由“键-值”对构成的集合。键集合不能重复,值集合没有特殊要求。键和值集合中的元素可以是任何对象,但是不能是nil。Foundation框架字典类也分为NSDictionary不可变字典和NSMutableDictionary可变字典。
    一、NSDictionary类

    NSDictionary有很多方法和属性,下面总结其常用的方法和属性。

    initWithDictionary: 构造器,通过Swift的Dictionary创建NSDictionary对象。

    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(" ") ②  
    6.   
    7.   
    8. let valuestring : NSString = "alpha bravo charlie delta echo"   ③  
    9. var values : NSArray = valuestring.componentsSeparatedByString(" ") ④  
    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  



    二、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  



    三、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课堂微信公共平台

  • 相关阅读:
    css3圆角细节
    css3伪元素
    使用vscode在谷歌上运行代码
    SpringCloud-技术专区-Gateway优雅的处理Filter抛出的异常
    SpringCloud-技术专区-Gateway全局通用异常处理
    Mybatis-技术专区-插件开发指南
    消息中间件-技术专区-RabbitMQ基本介绍
    SpringBoot-技术专区-自定义TaskExecutor线程池
    MySQL-技术专区-Binlog和Redolog的介绍
    SpringBoot-技术专区-Redis同数据源动态切换db
  • 原文地址:https://www.cnblogs.com/iOS-Blog/p/3960856.html
Copyright © 2011-2022 走看看