美文网首页Swift专题
Swift4.2~数组和字典(Array, Dictionary

Swift4.2~数组和字典(Array, Dictionary

作者: 记忆的北极 | 来源:发表于2018-09-19 12:46 被阅读327次

    一, array

    中括号[ ] 表示,数组值之间用逗号分隔
    1,如果数组声明为常量,则本身不能修改,且数组中的值也不能修改
    2,指定数组的类型,语法:Array<Type> 可以简写为 [Type]

    typeArray = ["123", "34"]
    
    var typeArray1:[String]
    var typeArray2:Array<Int> = [1, 2, 3]
            
    //3,如果声明了数组,但是没有初始化该数组,是不能被引用的
    var typeArray3:[String]
    print(typeArray3) //这里会报错,你可以尝试下.
    

    4,当检测到数组中的元素相同的时候是 Swift类型的数组
    当检测数组中的元素类型不同的时候, 则是OC类型的数组
    如果想变成NSMutableArray则要显式的声明

    var myArray:NSMutableArray = [1, 3, "xyz"]
    
    var myArray:Array<Int> = [1, 3, "xyz"]  //是错误的,因为最后一个元素不是整型
    

    5, var nullArray = [] 创建的是NSArray的数组类型, 因为Swift编译器不能推导数组类型

    6,创建Swift空数组

    var nullArray1 = [Int]()
    var nullArray2:Array<Float> = []
    var nullArray3:[String] = []
    

    7,创建初始化长度为4的Int数组, 并且这四个元素的初始化的值都是2

    var fourInt = [Int](repeating: 2, count: 4)
    print(fourInt)
    

    8,数组相加即为合并数组

    9,
    区间范围和等号右侧的元素个数不同, 元素多则插入,元素少去除多余的区间
    max 和 min超过了数组的上下边界,则直接抛出异常

    var arrayName[min..max] = [item1, item2, item3]
    

    10, append insert removeall 都没有返回值
    removelast removeAtIndex有返回值,返回被移除的值
    empty判断是否为空, count计算数组的个数

    11, 数组可以使用符合加法进行赋值 += 来追加元素的个数
    12, 枚举数组中的元素
    for...in 用变量或者下标都行
    for(index, value) in enumerate(fourInt){}

    for value in fourInt {
          print(value)
    }
           
    for (index, value) in fourInt.enumerated() {
          print(index, value)
    }
    

    二, Dictionary

    1,字典使用中括号,key-value之间用逗号隔开, key:value的形式
    如果字典中的key和value不是String类型的, 则不需要使用引号

    2

    var employ1:Dictionary<String, String> = ["name":"bill", "price":"345"]
    var employ2:[String:String] = ["name":"bill", "pric":"345"]
    var employ3 = ["name":"bill", "price":"345"]
    

    3, 类型不同则是OC类型的NSDictionary, 若要是NSMutableDictionary 则显式声明

    4,用let声明的字典,不仅字典本身不能再被修改,而且字典中的值也不能别修改

    5,

    var nullDict1 = Dictionary<Int, String>()
    var nullDict11 = Dictionary<String, Int>()
    var nullDict12 = Dictionary<String, Any>()
    
    var nullDict2 = [Int:String]()
    var nullDict3 = [String:Any]()
    
    nullDict1 = [1:"value"]
    nullDict11 = ["key1":1]
    nullDict12 = ["key1":"f"]
    

    6, dict[key] = value 如果有原来的key则修改, 没有则添加

    7, updataValue方法返回修改前的值, dict[key] = nil 删除key-value
    removeValueForKey 指定要删除数据的key, 并且返回待删除的value
    8,

            var dict1 = ["key1":"20", "key2":"abd"]
            //String 转换成Int 类型 转换的时候使用可选变量
            var numStr:String = "123"
            var num:Int? = Int(numStr)
            
            var num1:Int? = dict1["key1"] as? Int
            print("num1 == \(num1)")
            
            //String -> Int
            var numStr2:String = dict1["key1"]!
            print("numStr2 == \(numStr2)")
            var num2:Int = (Int(numStr2))!
            print("num2 == \(num2)")
    

    as! as? 同类型的 OC和Swift之间的转换
    Int类型的 NSObject类型值转换成Int类型,不需要可选类型而是要加上!
    as [String : Any]转换成Swift中的字典

     var dict2 = ["key1":"20", "key2":123] as [String : Any]
            
    //get Int from Dictionary
    var value3:Int = dict2["key2"] as! Int
    var valueStr3:String? = String(value3)
    print("valueStr3 == \((valueStr3))")
            
    if value3 is String {
           print("value3 ==\(value3) 是字符串")
    }else{
           print("value3 ==\(value3) 是数字")
     }
    
    //Int -> String
    var valueStr4:String = "\(value3)"
    if valueStr4 is String {
          print("valueStr4 ==\(valueStr4) 是字符串")
    }else{
          print("valueStr4 ==\(valueStr4) 是数字")
    }
    

    9,遍历字典

    for (key, value) in dict2 {
          print(key)
          print(value)
    }
            
    //keys values 的属性
    for key in dict2.keys {
            print(key)
    }
            
    

    当字典是NSDictionary的时候, 可以先将其转换成Dictionary的格式,然后再使用Keys 和 values属性获取相应的key 和 value

    var dict3:NSMutableDictionary = ["key1":12, "key2":"kk"]
    var dict4:Dictionary<String,Any> = dict3 as! Dictionary
    
    dict4["key1"] = 122222
    for (key, value) in dict3 {
          print(key, value)
    }
            
    dict3["key1"] = 1222
    print(dict3)
    

    相关文章

      网友评论

        本文标题:Swift4.2~数组和字典(Array, Dictionary

        本文链接:https://www.haomeiwen.com/subject/bcfinftx.html