• swift 字典的值为数字

    2017-09-15 00:28:15
    swift中 var emptyDict : [String,[String]] = ["广东":["广州","深圳"]] 报错 请教大神,这个要怎么写才是正确的 急在线等
  • Swift 字典用来存储无序的相同类型数据的集合,Swift字典会强制检测元素的类型,如果类型不同则会报错。 Swift字典每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。 和数组中的数据项...

    Swift 字典用来存储无序的相同类型数据的集合,Swift字典会强制检测元素的类型,如果类型不同则会报错。

    Swift字典每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。

    和数组中的数据项不同,字典中的数据项并没有具体顺序。我们在需要通过标识符(键)访问数据的时候使用字典,这种方法很大程度上和我们在现实世界中使用字典查字义的方法一样。

    Swift字典的key没有类型限制可以是整型或字符串,但必须是唯一的。

    如果创建一个字典,并赋值给一个变量,则创建的字典就是可以修改的。这意味着在创建字典后,可以通过添加、删除、修改的方式改变字典里的项目。如果将一个字典赋值给常量,字典就不可修改,并且字典的大小和内容都不可以修改。


    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. // 创建字典  
    2. // 创建一个特定类型的空字典,格式为:var dict = [KeyType: ValueType]()  
    3. // 创建一个空字典,键的类型为 Int,值的类型为 String 的简单语法:  
    4. var dict01 = [Int: String]()  
    5. print(dict01)  
    6.           
    7. // 创建一个字典的实例:  
    8. var dict02 :[Int:String] = [1:"One", 2:"Two", 3:"Three"]  
    9. print(dict02)  
    10.           
    11. var dict03 = ["name":"DevZhang""job":"iOSDev""company":"VSTECS"]  
    12. print(dict03)  
    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. // 访问字典  
    2. // 我们可以根据字典的索引来访问数组的元素,语法如下:var value = dict[key]  
    3. let value01 = dict02[1]  
    4. print(value01)  
    5.           
    6. let value02 = dict03["name"]  
    7. print(value02)  
    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. // 添加数据  
    2. let value03 = dict02.updateValue("Four", forKey4)  //或 dict02[4] = "Four"  
    3. print(value03)  
    4. print(dict02)  
    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. // 修改字典  
    2. // 方法1 使用 updateValue(forKey:) 增加或更新字典的内容。如果 key 不存在,则添加值,如果存在则修改 key 对应的值。格式为:dict.updateValue(value, forKey:key)方法返回Optional值。  
    3. var value04 = dict02.updateValue("TwoTmp", forKey2)  
    4. print(dict02)  
    5. print(value04)  
    6.    
    7. // 方法2 通过指定的 key 来修改字典的值  
    8. var value05 = dict02[3]  
    9. print(value05)  
    10. value05 = "ThreeTmp" // 修改无效  
    11. print(dict02)  
    12. dict02[3] = "ThreeTmp" // 修改有效  
    13. print(dict02)  
    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. // 移除 Key-Value 对  
    2. // 1 使用 removeValueForKey() 方法来移除字典 key-value 对。如果 key 存在该方法返回移除的值,如果不存在返回 nil 。  
    3. let valueRemove01 = dict02.removeValueForKey(2)  
    4. print(valueRemove01)  
    5. print(dict02)  
    6.           
    7. // 2 通过指定键的值为 nil 来移除 key-value(键-值)对。  
    8. dict02[1] = nil  
    9. print(dict02)  
    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. // 遍历字典  
    2. // 1 使用 for-in 循环来遍历某个字典中的键值对。  
    3. for (key, value) in dict03  
    4. {  
    5.  print("字典 key \(key) -  字典 value \(value)")  
    6. }  
    7.           
    8. // 2 使用enumerate()方法来进行字典遍历,返回的是字典的索引及 (key, value) 对  
    9. for (key, value) in dict03.enumerate()  
    10. {  
    11.  print("字典 key \(key) -  字典 (key, value) 对 \(value)")  
    12. }  
    13.   
    14. // 3   
    15. for key in dict03.keys  
    16. {  
    17.  let value = dict03[key]  
    18.  print("key = \(key), value = \(value)")  
    19. }  
    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. // 字典转换为数组  
    2. // 提取字典的键值(key-value)对,并转换为独立的数组。  
    3. let dictKeys = [String](dict03.keys)  
    4. for (key) in dictKeys  
    5. {  
    6.  print("\(key)")  
    7. }  
    8.           
    9. let dictValues = [String](dict03.values)  
    10. for (value) in dictValues  
    11. {  
    12.  print("\(value)")  
    13. }  
    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. // count 属性  
    2. let count01 = dict03.count  
    3. print(count01)  
    [objc] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. // isEmpty 属性  
    2. let empty01 = dict01.isEmpty  
    3. print("dict01 is \(empty01)")  
    4.           
    5. let empty02 = dict03.isEmpty  
    6. print("dict03 is \(empty02)")  

    展开全文
  • 自学swift3.0,如果有什么错误或建议的话欢迎吐槽哦~ //1.字典的定义使用[key:value,key:value]快速定义 let dic:[String:Any] = ["name":"张三","age":22] print(dic) //数组字典 let arrDic:[[String

    自学swift3.0,如果有什么错误或建议的话欢迎吐槽哦~

            //1.字典的定义使用[key:value,key:value]快速定义
            let dic:[String:Any] = ["name":"张三","age":22]
            print(dic)
            
            //数组字典
            let arrDic:[[String:Any]] = [
                ["name":"张三","age":22],
                ["name":"李四","age":24]
            ]
            print(arrDic)
            //2.可变字典的增删改查
            var dictionary:[String:Any] = ["name":"张三","age":22]
            print(dictionary)
            
            /*
             key存在则为修改,key不存在 则为添加
             */
            //增加键值对
            dictionary["score"] = 99
            print(dictionary)
            
            //修改键值对
            dictionary["age"] = 33
            print(dictionary)
            
            //删除键值对
            // ps: 字典是通过KEY来定位值的,所有的KEY必须是可以 hash/哈希 的 (md5就是一种哈希,哈希就是将字符串变成唯一的整数,便于查找,能够提高字典遍历的速度)
    //        dictionary.removeValue(forKey: <#T##Hashable#>)
            
            dictionary.removeValue(forKey: "score")
            print(dictionary)
            
            //字典遍历
            //写法一
            for e in dictionary {
                print("key = \(e.key)   value = \(e.value)")
                
            }
            
            //写法二
            for (key,value) in dictionary {
                print("key = \(key)   value = \(value)")
            }
            
            //字典合并
            var dic1 = ["name":"小明","score":"88"]
            print(dic1)
            let dic2 = ["teacher":"老大"]
            
            for (key,value) in dic2 {
                dic1[key] = value
            }
            print(dic1)
    



    展开全文
  • Swift 字典的常用方法

    2015-08-14 17:25:12
    *要正确使用字典,也需要一些条件 * 1,字典键值对的 键和值的类型必须明确,可以直接指定,也可以类似数组直接赋值由编译器自动识别 * 2,字典必须要初始化 * 3,键的类型必须是可以被哈希Hashable的(基本数据类型...

    /*

    *

    *要正确使用字典,也需要一些条件

    * 1,字典键值对的键和值的类型必须明确,可以直接指定,也可以类似数组直接赋值由编译器自动识别

    * 2,字典必须要初始化

    * 3,键的类型必须是可以被哈希Hashable的(基本数据类型和可以被哈希的类)

    *

    */



    //字典的几种声明方式

    var dic1=[1:1,2:12,3:32,4:16,5:15]
    var dic2:Dictionary<String,String>=[:]
    var dic3=Dictionary<String,String>()
    var dic4=[String : String]()


    常用方法见下方代码

    //1 读取字典元素
    var test1Dic=["key1":"你好","key2":"Swift","key3":"正在学习","key4":"字典","key5":"取值",]
    
    var test1Str=test1Dic["key2"]
    println("\(test1Str)")
    
    //此处取字典中未定义的键 不会报错,取出来的值为nil
    var test1Str2=test1Dic["key"]
    println("\(test1Str2)")
    
    
    
    //2 获取字典元素的个数
    
    println(test1Dic.count)
    
    //3 增加字典的元素
    
    test1Dic["key"]="test"
    println(test1Dic)
    
    //4 删除字典中的元素
    
    test1Dic.removeValueForKey("key1")
    println(test1Dic)
    
    //5 修改字典中的元素
    
    // 5.1 直接修改
    test1Dic["key"]="testkey"
    
    // 5.2 使用 updateValue
    var oldStr=test1Dic.updateValue("testkeytest", forKey: "key")
    println(oldStr)
    println(test1Dic)
    
    //6 遍历
    //6.1遍历所有的键值对
    
    for (key,value) in test1Dic{
        println("key:\(key) value:\(value)")
    }
    
    //6.2 遍历所有的键
    for test6Str in test1Dic.keys{
        println(test6Str)
    }
    
    //6.2 遍历所有的值
    for test6Str2 in test1Dic.values{
        println(test6Str2)
    }
    
    //7 字典转数组
    //7.1 将所有的键转为数组
    var test7Keys=Array(test1Dic.keys)
    println(test7Keys)
    
    //7.1 将所有的值转为数组
    var test7Values=Array(test1Dic.values)
    println(test7Values)
    


    苹果开发群 :414319235  欢迎加入  欢迎讨论

    展开全文
  • 十五 Swift3.0之 字典

    2017-12-08 08:32:55
    字典定义: 键值对 OC: NSDictionary *dict = [NSDictionary dictionaryWithObject:@"lnj" forKey:@"name"]; NSLog(@"%@", dict);NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj",...
    /*
    字典定义: 键值对
    OC:
    NSDictionary *dict = [NSDictionary dictionaryWithObject:@"lnj" forKey:@"name"];
    NSLog(@"%@", dict);
    
    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"age", @30, nil];
    NSLog(@"%@", dict);
    
    NSDictionary *dict = @{@"name":@"lnj", @"age":@30};
    NSLog(@"%@", dict);
    */
    
    // key一定要是可以hash的(String, Int, Float, Double, Bool), value没有要求
    var dict = ["name":"lnj", "age":30]
    print(dict)
    
    var dict1:Dictionary = ["name":"lnj", "age":30]
    print(dict1)
    
    var dict2:Dictionary<String,Any> = ["name":"lnj", "age":30]
    print(dict2)
    
    var dict3:[String:Any] = ["name":"lnj", "age":30]
    print(dict3)
    
    var dict4:[String:Any] = Dictionary(dictionaryLiteral: ("name", "lnj"), ("age", 30))
    print(dict4)
    
    //可变字典:
    var dict5 = [:]
    //不可变字典:
    let dict6  = [:]
    
    /*
    字典操作
    OC:
    1.获取
    NSDictionary *dict = @{@"name":@"lnj", @"age":@30};
    NSLog(@"%@", dict[@"name"]);
    
    2.修改
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"age", @30, nil];
    dict[@"name"] = @"iversion";
    NSLog(@"%@", dict[@"name"]);
    
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"age", @30, nil];
    [dict setObject:@"iversion" forKey:@"name"];
    NSLog(@"%@", dict[@"name"]);
    */
    //1.获取
    var dict7 = ["name":"lnj", "age":30]
    print(dict7["name"]!)
    
    //2.修改
    var dict8 = ["name":"lnj", "age":30]
    dict8["name"] = "iverson"
    print(dict8["name"]!)
    
    var dict9 = ["name":"lnj", "age":30]
    dict9.updateValue("iverson", forKey: "name")
    print(dict9["name"]!)
    
    // 3.更新
    // updateValue返回一个可选类型, 如果字典中不存在需要更新的key, 那么返回nil, 如果存在返回原始值
    var dict10 = ["name":"lnj", "age":30]
    if let orignal = dict10.updateValue("iverson", forKey: "name")
    {
        print(dict10["name"]!)
        print(orignal)
    }
    
    // updateValue返回一个可选类型, 如果字典中不存在需要更新的key, 那么返回nil并且会将新的键值对添加到字典中
    var dict11 = ["name":"lnj", "age":30]
    if let orignal = dict11.updateValue("iverson", forKey: "abc")
    {
        print(dict11["abc"]!)
        print(orignal)
    }
    print(dict11)
    
    /*
    4.添加
    OC:
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"age", @30, nil];
    dict[@"height"] = @175;
    NSLog(@"%@", dict);
    
    
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"name", @"lnj", @"age", @30, nil];
    [dict setObject:@175 forKey:@"height"];
    NSLog(@"%@", dict);
    */
    
    var dict12 = ["name":"lnj", "age":30]
    dict12["height"] = 175;
    print(dict12)
    
    /*
    5.删除
    OC:
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @30, @"age", nil];
    [dict removeObjectForKey:@"name"];
    NSLog(@"%@", dict);
    
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @30, @"age", nil];
    [dict removeAllObjects];
    NSLog(@"%@", dict);
    */
    var dict13 = ["name":"lnj", "age":30]
    dict13.removeValueForKey("name")
    print(dict13)
    
    
    // removeValueForKey返回一个可选类型, 如果字典中不存在需要删除的key, 那么返回nil并且不会执行任何操作, 如果存在则删除key对应的值, 并且返回被删除的值
    var dict14 = ["name":"lnj", "age":30]
    if let orignal = dict14.removeValueForKey("names")
    {
        print(dict14)
        print(orignal)
    }
    print(dict14)
    
    var dict15 = ["name":"lnj", "age":30]
    dict15.removeAll(keepCapacity: true)
    
    /*
    遍历字典
    OC:
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @30, @"age", nil];
    [dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    NSLog(@"key = %@ value = %@", key, obj);
    }];
    
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @30, @"age", nil];
    NSArray *keys = [dict allKeys];
    for (NSString *key in keys) {
    NSLog(@"%@", key);
    }
    
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"lnj", @"name", @30, @"age", nil];
    NSArray *values = [dict allValues];
    for (NSString *value in values) {
    NSLog(@"%@", value);
    }
    */
    
    var dict16 = ["name":"lnj", "age":30]
    for (key , value) in dict16
    {
        print("key = \(key) value = \(value)")
    }
    
    var dict17 = ["name":"lnj", "age":30]
    for key in dict17.keys
    {
        print("key = \(key)")
    }
    
    var dict18 = ["name":"lnj", "age":30]
    for value in dict18.values
    {
        print("value = \(value)")
    }
    展开全文
  • 【Swift初见】Swift字典

    2015-02-27 19:33:24
    顾名思义,当我们查字典的时候,我们会根据索引去查找我们需要查找的资源,在swift中也是如此,字典的每一个对象都包含一个key和一个value,我们通过key去查找当前这个key所对应的value,与数组不同的是字典中的数据...

    顾名思义,当我们查字典的时候,我们会根据索引去查找我们需要查找的资源,在swift中也是如此,字典的每一个对象都包含一个key和一个value,我们通过key去查找当前这个key所对应的value,与数组不同的是字典中的数据项在字典中没有具体的存储顺序。

    和Swift中数组类似的,在Swift可变字典与不可变字典仅仅通过let和var的定义来区分,而在OC中是通过NSDictionary和NSMutableDictionary来区分的。

    Swift的字典定义为:(key: value),对于key和value是有限制的,key的唯一限制是可hash的,这样就能保证key是独一无二的,key的address就为:addr = hash(key) , value = hashTavle[addr],先获取到key的地址,然后在哈希表中通过找到的key的地址来找到value的值。


    字典的构造:
    与数组类似的,字典也有很多相似的语法:
    var dict = ["key1":"value1" , "key2":"value2"]
    println(dict)

    输出为:[key1: value1, key2: value2]
    我们知道swift具有类型推导的功能,我们不用定义key和value的类型,OS就能帮我们推导出key和value都是String类型。

    我们也可以在申明一个字典的时候定义好字典中key和value的类型。
    var dict2 : Dictionary<String, Int> = ["key1":1, "key2":2]
    println(dict2)

    输出为:[key1: 1, key2: 2]

    当然我们也有一种省略一点的定义方式:
    var dict3 : [String : Int] = ["key3": 3, "key4":4]
    println(dict3)

    输出为:[key4: 4, key3: 3]

    我们也可以像数组一样使用构造语句来创建一个空字典:
    var emptyDict = Dictionary<String, String>()

    此时我们就创建了一个key和value都是字符串的空字典;
    如果我们在创建字典的时候不知道要放什么类型的数据,我们也可以利用swift的类型推导功能在以后添加数据项的时候自动推导:
    var emptyDict2 = [ : ]


    数组的操作:
    对数据的基础操作包含增删改查,对字典的操作同样如此:
    对字典新增一项时,我们可以通过下标来添加新的数据项,比如对dict添加一项:
    dict["key3"] = "value3"
    println(dict)

    此时dict中有三项了,输出为:[key1: value1, key3: value3, key2: value2]

    修改字典中某一项的值时也可以用下标来进行操作:
    dict["key1"] = "NOValue"
    println(dict)

    此时的输出就为:[key1: NOValue, key3: value3, key2: value2]
    swift还提供了一个updateValue的方法来更新字典中的值,
    dict.updateValue("123", forKey: "key4")
    println(dict)

    如果key存在则更新key所对应的value,如果key不存在则新增一条记录。

    和数组一样,我们可以通过字典的只读熟悉count来获取字典中的数据项的数量。

    如果我们需要从一个字典中移除某个数据项,有这么2种方式:
    1、用下标的方式来给某个键的对应值赋值为nil,这个该数据项就从字典中移除了:
    dict["key4"] = nil
    println(dict)

    从输出中我们可以明显的看出key4所对应的数据项已经从字典中移除掉了;
    2、用swift提供的函数:removeValueForKey:
    dict.removeValueForKey("key1")
    println(dict)

    3、用removeAll方式来移除所有数据项。


    字典遍历
    还记得在数组的遍历中有2种方式,一种是for-in循环来遍历,一种是enumerate来遍历数据项和索引返回一个元祖,在字典的遍历中有下面几种方式:
    1、for-in循环:
    var dict = ["key1" : "value1" , "key2" : "value2" , "key3" : "value3"]
    
    for key in dict{
        println(key)
    }
    
    for (key,value) in dict{
        println("key is \(key) and value is \(value)")
    }
    
    for (key, _) in dict {
        println(key)
    }
    
    for (_, value) in dict {
        println(value)
    }


    输出为:

    (key1, value1)
    (key3, value3)
    (key2, value2)
    key is key1 and value is value1
    key is key3 and value is value3
    key is key2 and value is value2
    key1
    key3
    key2
    value1
    value3
    value2


    我们看到这几种方式,第一种直接打印出键值对的值,第二种我们的条件里面写了一个元组,分别打印key和value,第三种我们加了一个下划线,表示我们不关心第二项value的值,我们只要第一项,第四种方式即我们只关心value的值:


    2、我们可以通过字典的keys熟悉来返回当前字典的所有的key,同样可以返回字典的所有value,
    for keys in dict.keys {
        println(keys)
    }
    
    for values in dict.values {
        println(values)
    }

    字典的keys和values返回的是一个集合,我们可以直接使用keys或者values属性来构造一个新数组:
    let keysArray = Array(dict.keys)
    println(keysArray)

    字典中的数据项是无序排列的,当我们遍历字典的时候,key和value会重新排列,而且其中的顺序是不固定的。



    欢迎大家指导,共同学习。





    展开全文
  • //: Playground - noun: a place ...//字典也叫map 映射 //声明个空的字典 var Dict0 = Dictionary&lt;Character, Any&gt;() Dict0.isEmpty //true   //可以直接给字典添加一个key和一个value Dict0...
  • 看书的时候看到 下面一段代码: var dicWithNils:[String:Int?] = [ "one":1, "two":2, "none":nil ] 现在要求把two这个key的值变成nil 错误答案: dicWithNils["two"] = nil ...我们可以使用下面中的任意一个来...
  • 当我们接口中请求到数据时, 如果服务端没有考虑到某个字段为空的情况下, 此时就会将该字段的空值返回过来, ...2.即使没有给默认值,那就稍微麻烦一点将返回的字典取值时判断 if dics!["re...
  • swift NSDictionary(字典)

    2016-01-15 10:00:03
    2、NSDictionary(字典)  //创建空字典   let emptyDictionary = DictionaryString, Float>()    //  字典被定义为 Dictionary ,这意味着这个字典的键是 String类型和值是Int类型
  • Swift 中实现字典

    2017-02-04 10:14:10
    虽然 Swift 原生的字典类型实现的 很复杂 (毫无疑问是为了性能),但是我们可以利用 Swift 提供的工具写出漂亮简洁的实现。我们一个简单的实现开始,并且逐步添加功能。 我们简要看一下字典的工作原理:它...
  • 需要字典转模型。 我是用的混编,model类用的是OC的写法 然后用MJ进行转换。 当我在cell赋值的时候一直闪退。定位不到问题。 通过断点得到的答案。 原因  cell.phoneCarText.text = "\(modelDic....
  • import UIKit    /*   字典的介绍   1.字典允许按照某个键访问元素   2.字典是由两部分组成, 一... 4.Swift 字典类型是Dictionary 也是一个泛型集合   5.字典分为 可变字典和 不可变字典   let ...
  • // Playground - noun: a place where people can play import UIKit //-----------------------------------------------------------... 定义固定格式的字典 // dict1的所有“键值”类型一致(都是字符串) var dict1
  • Swift 提供了三种基本数据类型,包括数组、集合、字典,都可用于存储值集合。数组是值的有序集合。集合是无序值的唯一值集合。字典是关键值关联的无序集合。   Swift 中的数组、集合、字典对它们可以存储的值和...
  • Optional<NSNumber>-String存放字典中作为请求参数上传时,请求参数不正确,被包裹了一层。session=1 变成 session=some(1).
  • 很多时候我们需要把服务器端请求下来的数据转成model类,今天就介绍一下如何利用runtime实现字典转模型1、首先先建一个model类class Person:NSObject {  var name:String?  var age:NSNumber? } 2、为NSObject...
  • 例如:  {  applyDate = "2016-08-07 14:49:17.051";  approvalDate = "";  approvalUser = "";  deviceCode = "";  deviceId = 2097ee7175f94c49b2692a
  • swift基础4-数组、字典

    2014-10-29 15:02:29
    var array1 = ["x","y","z"] var array2:[String] = ["x","y","z"] var array3:Array = ["x","y","z"] array1[0] array1[1] //初始化 var array4 = []//不建议使用此方法进行初始化,可以用来清空数组 ...
  • 持续更新中,纯笔记记录哦~ 相关的代码需要的话,还请留邮箱,后续我会更新到github上~~ ...而字典是无序的键值对数组集。 Swift的Array、Set和Dictionary类型被实现为泛型集合。因此,它所存储的元素的类
1 2 3 4 5 ... 20
收藏数 1,001
精华内容 400