`

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

分享到:
评论

相关推荐

    Swift版字典转模型框架

    Swift版字典转模型框架是一种用于将字典数据转换为模型对象的工具,它可以简化开发者在处理数据模型转换时的代码编写过程。以下是一个常用的Swift版字典转模型框架项目简介: 1. ObjectMapper:这是一个功能强大且...

    swift-运行时字典转模型模型快速转字典

    在Swift编程语言中,字典(Dictionary)和自定义模型(Model)之间的转换是常见的操作。这主要发生在处理JSON数据时,需要将接收到的字典数据转化为对象模型,或者将对象模型的数据转换回字典以便发送网络请求。在本...

    ios-Swift一键字典转模型.zip

    详情文档:https://github.com/CharlinFeng/Reflect 时点软件冯成林强势出品,只为让您更快的征服swift! .类反射 .一键字典转模型 .一键模型转字典 .一键plist转模型 .一键归档

    swift-利用runtime字典转模型

    Swift中的Runtime字典转模型是iOS开发中常见的一种技术,特别是在处理网络请求返回的数据时。RunTime(运行时)在Objective-C中是一个核心概念,而在Swift中,虽然它不像OC那样显式,但仍然存在,并且可以用于实现...

    swift-Objective-C&Swift库可以轻松将NSDictionary映射到模型对象与Alamofire完美配合

    在Objective-C中,NSDictionary是常用的字典类型,用于存储键值对。然而,直接操作NSDictionary来创建模型对象往往繁琐且容易出错。ObjectMapper通过提供简单的注解方式,使得开发者只需在模型类中定义属性,就能...

    swift-分类动态添加属性

    在Swift编程中,有时我们可能遇到这样的情况:系统的标准类无法完全满足我们的需求,因此我们需要对其进行扩展,添加一些自定义的属性。在这种情况下,我们通常会使用分类(Category)或者扩展(Extension)来实现。...

    Swift中字典与JSON转换的方法

    在 Swift 中,我们可以使用 JSONSerialization 类来实现字典与 JSON 转换的操作。下面是一个简单的示例代码: ```swift func convertStringToDictionary(text: String) -> [String:AnyObject]? { if let data = ...

    swift-集成OBJC中几乎所有的分类工具类拖进你的项目即时即用

    这个工具库可能包含了如字符串处理、数值计算、日期操作、数组和字典的便利方法等多种类别,极大地提高了Swift开发的效率。在实际使用中,你应该查看CLObjcSugar提供的文档或者源代码,了解每个分类的具体功能和用法...

    探讨Swift数组和字典

    Swift中的数组和字典是两种基础且重要的数据结构,它们在编程中扮演着不可或缺的角色。Swift数组具有类型安全和灵活性的特性,与Objective-C的NSArray和NSMutableArray有所不同。 数组(Array): 1. 声明与创建: ...

    swift-iOSObjective-C字典转模型模型转字典模型归档接档使用安全并且简单

    在iOS开发中,Swift与Objective-C是两种常用的编程语言,特别是在构建移动应用时。本教程将深入探讨如何在Objective-C中实现字典到模型、模型到字典的转换,以及模型的归档与解档操作,确保过程既安全又简便。这些...

    Swift版的MJExtension,运行时、反射与一键字典模型互转.zip

    Swift版MJExtension通过反射来获取模型类的属性,然后根据字典中的键值对进行赋值。这种技术大大简化了数据绑定的过程,减少了手动转换的代码量。 3. **字典模型互转** 字典模型互转是iOS开发中常见的任务,尤其是...

    Swift版字典转模型框架 可以直接移动项目中Swift项目使用

    Swift版字典转模型框架。 可以直接移动项目中Swift项目使用

    swift-MRCommon一系列常用的方法工具类

    在Swift编程语言中,开发人员经常需要创建工具类来封装常用功能,提高代码的复用性和可维护性。"swift-MRCommon一系列常用的方法工具类"便是这样的一个库,它集合了各种实用方法,旨在简化Swift项目的开发过程。...

    Swift-model(字典数组模型)

    将字典数组模型转换为JSON数据可以使用`JSONSerialization`类的`data(withJSONObject:)`方法,再将其转换为字符串: ```swift if let jsonData = try? JSONSerialization.data(withJSONObject: modelArray), let ...

    swift-自己写一遍字典转模型(参考YYModel)

    首先,我们需要理解Swift中的结构体(Struct)或类(Class)如何代表我们的数据模型。通常,我们会为每个JSON对象创建一个对应的Swift类型,其中包含相应的属性来存储数据。例如: ```swift struct User: Codable {...

    swift-可以在控制台输出数组和字典里面的中文字符

    这个主题“swift-可以在控制台输出数组和字典里面的中文字符”聚焦于如何在Swift中正确地存储、操作及打印包含中文字符的数组和字典。 首先,Swift的String类型支持Unicode字符集,这意味着它可以无缝处理包括中文...

    swift-DictToModel字典转model工具也包含了一个model转json工具类

    通常,你需要创建一个符合Swift的结构体或类,定义相应的属性,然后使用`DictToModel`提供的扩展方法将字典转换为对应的Model实例。 例如,假设你有一个如下的JSON数据: ```json { "name": "John Doe", "age": ...

    Swift 封装 Codable 字典转模型.zip

    这个"Swift 封装 Codable 字典转模型.zip"压缩包中包含的资源可能是用于演示如何将JSON字典高效地转化为自定义Swift模型的示例代码。本文将深入探讨`Codable`协议,以及如何利用它封装字典到模型的转换。 首先,让...

    swift-ZUtils封装好的一些常用的Category工具类

    Swift-ZUtils是一个专门为Swift开发者设计的实用工具库,它提供了对NSArray、NSDictionary、NSString和NSData等基础数据类型的扩展,使得在Swift中进行对象转化和操作变得更加便捷。这个库的出现,旨在提高开发效率...

    swift创建数据库、模型转字典、封装选择视图

    在Swift编程中,数据库操作、模型转换为字典以及UI组件的封装是常见的开发任务。以下将详细讲解这些知识点。 一、Swift创建数据库 在Swift中,常用的数据库框架有Core Data和SQLite。Core Data是Apple提供的一套...

Global site tag (gtag.js) - Google Analytics