zoukankan      html  css  js  c++  java
  • Swift_字典详解

    Swift_字典详解


    点击查看源码

    初始化

    fileprivate func testInit() {
        //空字典
        var dic = [String:String]()
        print(dic)
        
        dic = [:]
        print(dic)
        
        dic = Dictionary()
        print(dic)
        
        dic = Dictionary<String,String>()
        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<String, String>(_value: Swift.DictionaryIndexRepresentation<Swift.String, Swift.String>._native(Swift._NativeDictionaryIndex<Swift.String, Swift.String>(nativeStorage: , offset: 1)))
         endIndex:DictionaryIndex<String, String>(_value: Swift.DictionaryIndexRepresentation<Swift.String, Swift.String>._native(Swift._NativeDictionaryIndex<Swift.String, Swift.String>(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"]
         
         */
    }
    
  • 相关阅读:
    二分使用条件 + 代码模板
    Codeforces Round #710 (Div. 3) Editorial 1506A
    Cf #709 Div. 2 B. Restore Modulo 一个只有三千多人过的b题, 妙啊!
    牛客网 第十八届浙大城市学院程序设计竞赛(同步赛)J--万万没想到 啦啦啦啦啦
    Codeforces Round #707 (Div. 2)A.英语漏洞 + C.Going Home C题收获不小
    Codeforces Round #706 (Div. 2)B. Max and Mex __ 思维, 模拟
    Codeforces Round #705 (Div. 2) B. Planet Lapituletti(镜像时钟) 思维
    位运算
    Edu Cf Round 105 (Div. 2) B. Berland Crossword 1.读懂题, 2. 思维
    Codeforces Round #703 (Div. 2)__ B. Eastern Exhibition__ 纯纯的思维
  • 原文地址:https://www.cnblogs.com/xubaoaichiyu/p/6485833.html
Copyright © 2011-2022 走看看