五.swift - 数组和字典

集合
1. 数组
1. 数组是用 []
2. let 用于声明不可变数组;var就是可变
3. 指定了数组类型之后,不能添加其他类型的数组
4. 通过 let 变量名 = [类型]() 实现数组的初始化
5.  protocol AnyObject swift中的基类
    NSObject OC中的基类
6.  数组的合并: 
  • 要是类型相同:let sumArray = array + array2
  • 要是类型不同:遍历,具体见下面的代码
//: [Int]
let numbers = [12345678910]
  • 遍历
for  num  in  numbers {
    print(num)
}
  • 通过下标获取指定项内容
let  num1 = numbers[ 0 ]
let num2 = numbers[1]
  • 可变&不可变
    • let 定义不可变数组
    • var 定义可变数组
let  array = [ "zhangsan" "lisi" ]
//: 不能向不可变数组中追加内容
//array.append("wangwu")
var array1 = ["zhangsan""lisi"]

//: 向可变数组中追加内容
array1.append( "wangwu" )
  • 数组的类型
    • 如果初始化时,所有内容类型一致,择数组中保存的是该类型的内容
    • 如果初始化时,所有内容类型不一致,择数组中保存的是 NSObject
//: array1 仅允许追加 String 类型的值
//array1.append(18)

var array2 = ["zhangsan"18]
//: 在 Swift 中,数字可以直接添加到集合,不需要再转换成 `NSNumber`
array2.append(100)
//: 在 Swift 中,如果将结构体对象添加到集合,仍然需要转换成 `NSValue`
array2.append( NSValue ( CGPoint CGPoint (x:  10 , y:  10 )))
  • 数组的定义和实例化
    • 使用 : 可以只定义数组的类型
    • 实例化之前不允许添加值
    • 通过 let 变量名 = [类型]() 实现数组的初始化
var  array3: [ String ]
//: 实例化之前不允许添加值
//array3.append("laowang")
//: 实例化一个空的数组
array3 = [String]()
array3.append( "laowang" )
  • 数组的合并
    • 必须是相同类型的数组才能够合并
    • 开发中,通常数组中保存的对象类型都是一样的!
let array = [1,2,3,4,5]
var array2 = [6,7]
array2. append (9)
var array3: [ NSObject ] = [ "123" ,12]
// 数组的合并
        // 1. 先让 array array2 合并
        let sumArray = array + array2
       
       
print (sumArray)
       
       
// 2. array2 array3 合并
        // 数组合并的时候 , 也是相同类型才可以合并
//        let sumArray2 = array2 + array3
        // 遍历一下 array2 , array2 添加到新数组里
        var sumArray3 = array3
       
for sum in array2 {
            sumArray3.
append (sum)
        }
  • 数组的删除
//: 删除指定位置的元素
array3.removeAtIndex(3)
//: 清空数组
array3.removeAll()

2. 字典
1.同样使用 [] 定义字典,[String : NSObject] 是最常用的字典类型
2.let 声明不可变的字典;var 声明可变的字典
3.如果字典里没有对应的key,直接 dict["name"] = "xyy" 就添加了一个键值对;
        如果字典里有对应的key,直接替换原有的值
        直接让key所对应的值 = nil,就删除了这个键值对
4. 直接让key所对应的值 = nil,就删除了这个键值对
        dict["key"] = nil
5. 想添加任意类型的数据,我们的字典该怎么初始化?? -- 他的类型是通过自动推到
var newDict = [ String : NSObject ]()
6. 字典的合并 -- 很少用,不是用 + .只能通过遍历的形式
//: [String : NSObject] 是最常用的字典类型
var dict = ["name""zhangsan""age"18]
//: * 如果 key 不存在,会设置新值
dict["title"] = "boss"
//: * 如果 key 存在,会覆盖现有值
dict[ "name" ] =  "xyy"
  • 遍历
    • kv 可以随便写
    • 前面的是 key
    • 后面的是 value
//: 遍历
for (k, v) in dict {
    print("\(k) ~~~ \(v)")
}
  • 合并字典
    • 如果 key 不存在,会建立新值,否则会覆盖现有值
//: 合并字典
var dict1 = [StringNSObject]()
dict1["nickname"] = "大老虎"
dict1["age"] = 100

//: 如果 key 不存在,会建立新值,否则会覆盖现有值
for (k, v) in dict1 {
    dict[k] = v
}
print(dict)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值