美文网首页
swift 数组、字典

swift 数组、字典

作者: JianLee | 来源:发表于2021-06-08 12:03 被阅读0次

    Swift数组

    • 使用有序列表存储同一类型的多个值
    • 值可以重复
    • 数组赋值给变量值和数组大小都能修改,赋值给常量则不可修改。

    创建数组

    • 我们可以使用构造语法来创建一个由特定数据类型构成的空数组:
    var someArray = [SomeType]()
    
    • 以下实例创建了一个类型为 Int ,数量为 3,初始值为 0 的空数组:
    var someInts = [Int](repeating: 0, count: 3)
    
    • 以下实例创建了含有三个元素的数组:
    var someInts:[Int] = [10, 20, 30]
    

    访问数组

    通过index索引访问数组的值,0对应第一个元素,1对应第二个元素。

    var someInts = [Int](repeating: 10, count: 3)
    var someVar = someInts[0]
    print( "第一个元素的值 \(someVar)" )
    print( "第二个元素的值 \(someInts[1])" )
    print( "第三个元素的值 \(someInts[2])" )
    

    修改数组

    • 可以使用append()方法或者赋值运算符 += 在数组末尾添加元素
    var someInts = [Int]()
    
    someInts.append(20)
    someInts.append(30)
    someInts += [40]
    
    var someVar = someInts[0]
    
    print( "第一个元素的值 \(someVar)" )
    print( "第二个元素的值 \(someInts[1])" )
    print( "第三个元素的值 \(someInts[2])" )
    
    • 也可以通过索引修改数组元素的值:
    var someInts = [Int]()
    
    someInts.append(20)
    someInts.append(30)
    someInts += [40]
    
    // 修改最后一个元素
    someInts[2] = 50
    

    遍历数组

    • 我们可以使用for-in循环来遍历数组中的所有数据项:
    var someStrs = [String]()
    
    someStrs.append("Apple")
    someStrs.append("Amazon")
    someStrs.append("Runoob")
    someStrs += ["Google"]
    
    for item in someStrs {
       print(item)
    }
    

    以上程序执行输出结果为:

    Apple
    Amazon
    Runoob
    Google
    
    • 如果我们同时需要每个数据项的值和索引值,可以使用 String 的 enumerate() 方法来进行数组遍历。实例如下:
    var someStrs = [String]()
    
    someStrs.append("Apple")
    someStrs.append("Amazon")
    someStrs.append("Runoob")
    someStrs += ["Google"]
    
    for (index, item) in someStrs.enumerated() {
        print("在 index = \(index) 位置上的值为 \(item)")
    }
    

    合并数组

    我们可以使用加法操作符(+)来合并两种已存在的相同类型数组。新数组的数据类型会从两个数组的数据类型中推断出来:

    var intsA = [Int](repeating: 2, count:2)
    var intsB = [Int](repeating: 1, count:3)
    
    var intsC = intsA + intsB
    
    for item in intsC {
        print(item)
    }
    

    以上程序执行输出结果为:

    2
    2
    1
    1
    1
    

    count 属性

    我们可以使用 count 属性来计算数组元素个数:

    var intsA = [Int](count:2, repeatedValue: 2)
    var intsB = [Int](count:3, repeatedValue: 1)
    
    var intsC = intsA + intsB
    
    print("intsA 元素个数为 \(intsA.count)")
    print("intsB 元素个数为 \(intsB.count)")
    print("intsC 元素个数为 \(intsC.count)")
    

    isEmpty 属性

    我们可以通过只读属性 isEmpty 来判断数组是否为空,返回布尔值:

    var intsA = [Int](count:2, repeatedValue: 2)
    var intsB = [Int](count:3, repeatedValue: 1)
    var intsC = [Int]()
    
    print("intsA.isEmpty = \(intsA.isEmpty)")
    print("intsB.isEmpty = \(intsB.isEmpty)")
    print("intsC.isEmpty = \(intsC.isEmpty)")
    

    Swift 字典

    • 字典用来存储无序的相同类型数据的集合
    • 字典每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。
    • 字典的key没有类型限制可以是整型或字符串,但必须是唯一的。
    • 创建一个字典,并赋值给一个变量,则创建的字典就是可以修改的。如果将一个字典赋值给常量,字典就不可修。

    创建字典

    使用以下语法来创建一个特定类型的空字典。

    var someDict =  [KeyType: ValueType]()
    

    创建一个空字典,键的类型为 Int,值的类型为 String 的简单语法:

    var someDict = [Int: String]()
    

    以下为创建一个字典的实例:

    var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    

    访问字典

    我们可以根据字典的索引来访问数组的元素,语法如下:

    var someVar = someDict[key]
    

    以下我们初始化并访问字典:

    var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    
    var someVar = someDict[1]
    
    print( "key = 1 的值为 \(someVar)" )
    print( "key = 2 的值为 \(someDict[2])" )
    print( "key = 3 的值为 \(someDict[3])" )
    

    以上程序输出结果为:

    key = 1 的值为 Optional("One")
    key = 2 的值为 Optional("Two")
    key = 3 的值为 Optional("Three")
    

    修改字典

    我们可以使用 updateValue(forKey:) 增加或更新字典的内容。如果 key 不存在,则添加值,如果存在则修改 key 对应的值。updateValue(_:forKey:)方法返回Optional值。实例如下:

    var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    
    var oldVal = someDict.updateValue("One 新的值", forKey: 1)
    
    var someVar = someDict[1]
    
    print( "key = 1 旧的值 \(oldVal)" )
    print( "key = 1 的值为 \(someVar)" )
    print( "key = 2 的值为 \(someDict[2])" )
    print( "key = 3 的值为 \(someDict[3])" )
    

    以上程序执行输出结果为:

    key = 1 旧的值 Optional("One")
    key = 1 的值为 Optional("One 新的值")
    key = 2 的值为 Optional("Two")
    key = 3 的值为 Optional("Three")
    

    也可以通过指定的 key 来修改字典的值

    var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    
    var oldVal = someDict[1]
    someDict[1] = "One 新的值"
    

    移除 Key-Value 对

    我们可以使用 removeValueForKey() 方法来移除字典 key-value 对。如果 key 存在该方法返回移除的值,如果不存在返回 nil

    var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    
    var removedValue = someDict.removeValue(forKey: 2)
    
    print( "key = 1 的值为 \(someDict[1])" )
    print( "key = 2 的值为 \(someDict[2])" )
    print( "key = 3 的值为 \(someDict[3])" )
    

    以上程序执行输出结果为:

    key = 1 的值为 Optional("One")
    key = 2 的值为 nil
    key = 3 的值为 Optional("Three")
    

    也可以通过指定键的值为 nil 来移除 key-value(键-值)对。实例如下:

    var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    
    someDict[2] = nil
    
    print( "key = 1 的值为 \(someDict[1])" )
    print( "key = 2 的值为 \(someDict[2])" )
    print( "key = 3 的值为 \(someDict[3])" )
    

    遍历字典

    我们可以使用 for-in 循环来遍历某个字典中的键值对。实例如下:

    var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    
    for (key, value) in someDict {
       print("字典 key \(key) -  字典 value \(value)")
    }
    

    我们也可以使用enumerate()方法来进行字典遍历,返回的是字典的索引及 (key, value) 对,实例如下:

    var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    
    for (key, value) in someDict.enumerated() {
        print("字典 key \(key) -  字典 (key, value) 对 \(value)")
    }
    

    字典转换为数组

    提取字典的键值(key-value)对,并转换为独立的数组。

    var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    
    let dictKeys = [Int](someDict.keys)
    let dictValues = [String](someDict.values)
    
    print("输出字典的键(key)")
    
    for (key) in dictKeys {
        print("\(key)")
    }
    
    print("输出字典的值(value)")
    
    for (value) in dictValues {
        print("\(value)")
    }
    

    count 属性

    使用只读的 count 属性来计算字典有多少个键值对:

    var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    var someDict2:[Int:String] = [4:"Four", 5:"Five"]
    
    print("someDict1 含有 \(someDict1.count) 个键值对")
    print("someDict2 含有 \(someDict2.count) 个键值对")
    

    isEmpty 属性

    可以通过只读属性 isEmpty 来判断字典是否为空,返回布尔值:

    var someDict1:[Int:String] = [1:"One", 2:"Two", 3:"Three"]
    var someDict2:[Int:String] = [4:"Four", 5:"Five"]
    var someDict3:[Int:String] = [Int:String]()
    
    print("someDict1 = \(someDict1.isEmpty)")
    print("someDict2 = \(someDict2.isEmpty)")
    print("someDict3 = \(someDict3.isEmpty)")
    

    相关文章

      网友评论

          本文标题:swift 数组、字典

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