• Swift 集合类型


     Swift语言提供数组和字典的集合类型

     Swift 语言里的数组和字典中存储的数据值类型必须明确 ,即数组中只能存放同类型的数据。

    1: 数组 

    数组的创建

    var shoppingList: String[] = ["tset", "hell", “hell”]
    var arrayInt:Int[] = [1, 3]

    var arrayIntEx  = [55, 32]//使用推理类型

    //空数组的创建

     var someInts = Int[]()
     println("(someInts.isEmpty)")
    //创建指定类型(Double)和个数(3)并设置初始值(0.0)
     var threeDoubles = Double[](count: 3, repeatedValue:0.0) 

    数组的访问用下标访问。下标从0开始,注意不要越界了。

    var arrayIntEx  = [1, 3]
    arrayIntEx[1] = 99
    println("(arrayIntEx[1])")

    数组的可修改性是依赖var或者let控制的

    数组元素个数使用 count ,isEmpty检测是否位空数组

    var arrayIntEx  = [1, 3]
    let count = arrayIntEx.count
    let bFlag = shoppingList.isEmpty
    println("(count)
    (bFlag)")

    数组元素追加  append 。必须是var类型数组,而且追加的元素类型要和数组类型一致。同时也可以用 += 操作

    var arrayIntEx  = [1, 3]
    arrayIntEx.append(8)
    arrayIntEx += 9
    arrayIntEx += [55, 66]
    println("(arrayIntEx[2])
    (arrayIntEx[3])
    (arrayIntEx[4])
    (arrayIntEx[5])
    ")

    数组元素指定索引号插入 insert().insert在指定索引号的时候,最大为原有元素个数+现插入的元素个数-1,这样类似于在末尾添加。insert插入后,原有的元素后移动。

    var arrayIntEx  = [1, 3]
    arrayIntEx.insert(5, atIndex:2)
    println("(arrayIntEx)")

    数组指定索引号删除 removeAtIndex

    var arrayIntEx  = [1, 3, 9]
    arrayIntEx.removeAtIndex(1)
    println("(arrayIntEx)")

    数组遍历用 for in 

    var arrayIntEx  = [1, 3, 9]
    for item in arrayIntEx {
        println("(item)")
    }

    如果要使用索引号和值,那用enumerate 

    var arrayTest = ["ax", "bx", "sx", "sxx"]
    for (index, value) in enumerate(arrayTest)
     {  println("Item: (index + 1): (value)") 
    }

     数组拼接 如果两个数组类型一样,可以用+做拼接。当然结果的顺序和你拼接的时候的顺序时一致的

    var arrayIntFirst = [2, 5]
    var  arrayIntSecond = [6, 77]
    var arrayRes =  arrayIntSecond +  arrayIntFirst
    println("(arrayRes)")

    2:字典

    Swift 的字典使用时需要具体规定可以存储键和值类型 ,字典存储时没有顺序的,它依赖于一个可以哈希的keyValue值来查找。估计它是把keyValue哈希后作为key建立的红黑二茬树来查找的。

    字典使用 Dictionary<KeyType, ValueType>定义 .KeyType要求可以哈希的,ValueType在一个字典里类型必须一致

    字典创建

    var airports: Dictionary<Int, String> = [1: "yamide",2: "soga"]//显示类型说明
    var dicDefault = [2:"xx", 33:"oo"]//使用了类型推理,这里比较特殊的是 2和3 不能用 2.0 和 3 ,它不支持类型的转换推理的
    var namesOfIntegers = Dictionary<Int, String>()//空数组的创建
    var dicEmpty = [:]

    字典的可否修改时依靠var和let控制的

    字典元素个数使用count 属性可以得到

    var dicDefault = [2:"xx", 33:"oo"]
    println("(dicDefault.count)")

    字典元素的更新。可以用下标关键字添加

    var dicDefault = [2:"xx", 33:"oo"]
    dicDefault[22] = "tt"
    println("(dicDefault)")

    如果下标添加的key是字典里已经有的,那么它会update数据.

    updateValue(forKey:)方法可以设置或者更新特定键对应的值 .如果keyValue没有就添加,字典中已经有则更新

    var dicDefault = [1:"xx", 2:"oo"]
    dicDefault[3] = "tt"
    dicDefault.updateValue("sx", forKey:4)//add
    dicDefault.updateValue("sbcd", forKey:2)//update

    删除  removeValueForKey 

    var dicDefault = [1:"xx", 2:"oo"]
    dicDefault[3] = "tt"
    dicDefault.updateValue("sx", forKey:4)
    dicDefault.removeValueForKey(2)
    println("(dicDefault)")

    字典遍历 可以使用for in 遍历字典键值对。以元组形式返回

    var dicDefault = [1:"xx", 2:"oo"]
    for(key, value)in dicDefault {
        println("key:(key) value:(value)
    ")
    }

    字典可以用 values 返回所有值 keys返回所有关键字

    var dicDefault = [1:"xx", 2:"oo"]
    var keys = dicDefault.keys
    var values = dicDefault.values
    for key in keys {
        println("key:(key)
    ")
    }
    for value in values {
        println("value:(value)
    ")
    }
  • 相关阅读:
    nodejs pm2使用
    react生命周期
    It's a start!
    关于react-native报错: Invariant Violation: WebView has been removed from React Native. It can ....
    react-native 页面使用WebView布满整个页面,导航栏不显示问题
    两个函数执行顺序,异步问题处理(已解决)
    react-native webView乱码问题
    react-native 多页面之间传值
    时间戳转换为时间日期格式
    React Native返回刷新页面(this.props.navigation.goBack())
  • 原文地址:https://www.cnblogs.com/zhidao-chen/p/3866284.html
Copyright © 2020-2023  润新知