1.Swift 基本语法的解析 集合(数组,字典)

字典

字典是无序的

可变&不可变

  • let 定义不可变数组
  • var 定义可变数组

定义

  • 同样使用 [] 定义字典
  • let 不可变字典
  • var 可变字典
  • [String : NSObject] 是最常用的字典类型

//空的字典

 

var dic:[Int:String] = [:]

var dic2 = [Int:String]()

var dic3 = [1:"1"]

dic3 = [:]

[String : NSObject] 是最常用的字典类型 var dict = ["name": "zhangsan", "age": 18]

另一种常用的

let dic:[String : AnyObject] = [String :AnyObject]()

赋值

  • 赋值直接使用 dict[key] = value 格式
  • 如果 key 不存在,会设置新值
  • 如果 key 存在,会覆盖现有值

//: * 如果 key 不存在,会设置新值

dict["title"] = "boss"

//: * 如果 key 存在,会覆盖现有值

dict["name"] = "lisi" dict

  • 遍历
  • kv 可以随便写,相当于占位符
    • 前面的是 key
    • 后面的是 value

//: 遍历 for (k, v) in dict {

    print("\(k) ~~~ \(v)")

}

 

  • 合并字典
    • 如果 key 不存在,会建立新值,否则会覆盖现有值

//: 合并字典
var dict1 = [String: NSObject]()
dict1["nickname"] = "大老虎"
dict1["age"] = 100

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

 

 

//字典的删除

    //字典的删除
    func demo4 (){
    
        var dic = ["name":"xiaowang","age":"19"]
        
        //删除方式一
        
        dic.removeValueForKey("name")
        print("dic")
        
        print("\(dic)")
        
        //删除所有的元素
//        dic .removeAll()
        //删除指定的 方式二
        dic["age"] = nil
        
        print("\(dic)")
        
        
        
    }

 

数组

数组

//创建空的数组和字典

//这样写会报错 //var errorArray = []

 

//创建空的数据集合

//方式一

var arr:[NSObject] = [NSObject]()

var array:[Int] = []

//方式二

var array2 = [Int]()

//方式三

var array3 = [1]

array3 = []

 

数组使用 [] 定义,这一点与 OC 相同

//: [Int]
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


遍历

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)))


数组的定义和实例化

  • 使用 : 可以只定义数组的类型
  • 实例化之前不允许添加值
  • 使用 [类型]() 可以实例化一个空的数组
var array3: [String]
//: 实例化之前不允许添加值
//array3.append("laowang")
//: 实例化一个空的数组
array3 = [String]()
array3.append("laowang")


数组的合并

  • 必须是相同类型的数组才能够合并
  • 开发中,通常数组中保存的对象类型都是一样的!
array3 += array1

//: 必须是相同类型的数组才能够合并,以下两句代码都是不允许的
//array3 += array2
//array2 += array3


  • 数组的删除
//: 删除指定位置的元素
array3.removeAtIndex(3)
//: 清空数组
array3.removeAll()
//清空数组 但是保持容量
arr3.removeAll(keepCapacity: true)


内存分配

  • 如果向数组中追加元素,超过了容量,不是以 2 倍的形式来递增的

var list = [Int]()

for i in 0...16 {
    list.append(i)
    print("添加 \(i) 容量 \(list.capacity)")
}

 

转载于:https://my.oschina.net/kukele/blog/698716

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值