博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift_字典详解
阅读量:4344 次
发布时间:2019-06-07

本文共 5233 字,大约阅读时间需要 17 分钟。

Swift_字典详解


初始化

fileprivate func testInit() {    //空字典    var dic = [String:String]()    print(dic)        dic = [:]    print(dic)        dic = Dictionary()    print(dic)        dic = Dictionary
() print(dic) //非空字典 dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"] print(dic) dic = Dictionary(dictionaryLiteral: ("name","XuBaoAiChiYu"),("QQ","1045214799")) print(dic) /* print [:] [:] [:] [:] ["name": "XuBaoAiChiYu", "QQ": "1045214799"] ["name": "XuBaoAiChiYu", "QQ": "1045214799"] */}

相关属性

//相关属性fileprivate func testProperties() {        let dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]    print(dic)        print("count:\(dic.count)") // 有多个对元素    print("isEmpty:\(dic.isEmpty)") // 是否为空        // 获取所有key    let keys = [String](dic.keys)    print("keys:\(keys)")        // 获取所有value    let values = [String](dic.values)    print("values:\(values)")        print("startIndex:\(dic.startIndex)") // 首脚标    print("endIndex:\(dic.endIndex)")     // 尾脚标        /*  print          ["name": "XuBaoAiChiYu", "QQ": "1045214799"]     count:2     isEmpty:false     keys:["name", "QQ"]     values:["XuBaoAiChiYu", "1045214799"]     startIndex:DictionaryIndex
(_value: Swift.DictionaryIndexRepresentation
._native(Swift._NativeDictionaryIndex
(nativeStorage: , offset: 1))) endIndex:DictionaryIndex
(_value: Swift.DictionaryIndexRepresentation
._native(Swift._NativeDictionaryIndex
(nativeStorage: , offset: 4))) */}

查找元素

//查找元素fileprivate func testFindingObjects() {    let dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]    print(dic)        if let dicIndex = dic.index(forKey: "name") { // 获取位置        let item = dic[dicIndex] // 根据位置获取键值对        print("key:\(item.0);value:\(item.1)")    }        let value = dic["name"] // 根据key提取Value    print("value:\(value)")        // 遍历输出    for (key, value) in dic {        print("\(key): \(value)")    }        // 所有key输出    for key in dic.keys {        print("key:\(key)")    }        // 所有value输出    for value in dic.values {        print("value: \(value)")    }        /*  print          ["name": "XuBaoAiChiYu", "QQ": "1045214799"]     key:name;value:XuBaoAiChiYu     value:Optional("XuBaoAiChiYu")     name: XuBaoAiChiYu     QQ: 1045214799     key:name     key:QQ     value: XuBaoAiChiYu     value: 1045214799          */}

增加元素

//增加元素fileprivate func testAdd() {    var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]    print(dic)        // 如果没有则添加,有则修改    dic["language"] = "swift"    print(dic)        /*  print          ["name": "XuBaoAiChiYu", "QQ": "1045214799"]     ["language": "swift", "name": "XuBaoAiChiYu", "QQ": "1045214799"]          */}

删除元素

//删除元素fileprivate func testRemove() {    var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]    print(dic)        let oldValue = dic.removeValue(forKey: "name")// 根据key删除,并返回删除的value    print("\(oldValue)")        // 先找到位置,然后根据位置删除    if let dictIndex = dic.index(forKey: "QQ") {        let oldItem = dic.remove(at: dictIndex)// 返回删除的元素对        print("key:\(oldItem.0);value:\(oldItem.1)")    }        dic.removeAll() // 删除所有元素    print(dic)        /*  print          ["name": "XuBaoAiChiYu", "QQ": "1045214799"]     Optional("XuBaoAiChiYu")     key:QQ;value:1045214799     [:]          */}

修改元素

//修改元素fileprivate func testReplace() {    var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]    print(dic)        // 如果没有则添加,有则修改    dic["name"] = "XUBAO" // 修改    print(dic)        let oldValue = dic.updateValue("XUBAOAICHIYU", forKey: "name") // 修改,并返回原来的value    print("\(oldValue)")        /*  print          ["name": "XuBaoAiChiYu", "QQ": "1045214799"]     ["name": "XUBAO", "QQ": "1045214799"]     Optional("XUBAO")          */}

排序

//排序fileprivate func testSort() {    let dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]    print(dic)        // 排序主要只排序key或者value,然后借用Array的排序    // 排序key    var array = dic.keys.sorted(by: { str1,str2 in str1 < str2 })    array = dic.keys.sorted(by: <)    print(array)        // 排序value    array = dic.values.sorted(by: {$0 > $1})    print(array)        /*  print          ["name": "XuBaoAiChiYu", "QQ": "1045214799"]     ["QQ", "name"]     ["XuBaoAiChiYu", "1045214799"]          */}

文件读写

fileprivate func testReadingAndWriting() {    // Document目录    let documents:[String] = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)    let docDirPath = documents.first!    let path = (docDirPath as NSString).appendingPathComponent("test.plist")    let url = URL(fileURLWithPath: path)    var dic = ["name":"XuBaoAiChiYu","QQ":"1045214799"]        // 写    (dic as NSDictionary).write(toFile: path, atomically: true)    (dic as NSDictionary).write(to: url, atomically: true)        // 读    dic = NSDictionary(contentsOfFile: path) as! Dictionary    print(dic)    dic = NSDictionary(contentsOf: url) as! Dictionary    print(dic)        /*  print          ["name": "XuBaoAiChiYu", "QQ": "1045214799"]     ["name": "XuBaoAiChiYu", "QQ": "1045214799"]          */}

转载于:https://www.cnblogs.com/xubaoaichiyu/p/6485833.html

你可能感兴趣的文章
crontab导致磁盘空间满问题的解决
查看>>
自定义滚动条
查看>>
APP开发手记01(app与web的困惑)
查看>>
初识前端作业1
查看>>
ffmpeg格式转换命令
查看>>
万方数据知识平台 TFHpple +Xpath解析
查看>>
Hive实现oracle的Minus函数
查看>>
秒杀多线程第四篇 一个经典的多线程同步问题
查看>>
RocketMQ配置
查看>>
蚂蚁金服井贤栋:用技术联手金融机构,形成服务小微的生态合力
查看>>
端口号大全
查看>>
POJ 3740 Easy Finding (DLX模板)
查看>>
MySQL 处理重复数据
查看>>
关于typedef的用法总结(转)
查看>>
Linux下安装rabbitmq
查看>>
曹德旺
查看>>
【转】判断点在多边形内(matlab)
查看>>
java基础之集合:List Set Map的概述以及使用场景
查看>>
Python 线程 进程 协程
查看>>
iOS语言中的KVO机制
查看>>