//
// ViewController.swift
// 011-数组
//
// Created by 庄壮勇 on 2018/1/3.
// Copyright © 2018年 Personal. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
demo5()
}
// MARK: - 数组的合并
func demo5() {
var array:[Any] = ["张三","小芳","小羊"]
let array2 = ["老刀","1","2",180] as [Any]
// 将array2 的内容合并到 array
// ***注意: 要合并数组的类型必须一致
array += array2
print(array)
}
// MARK: - 数组的容量
func demo4() {
// 定义一个数组,指定类型是 存放Int 的数组,但是没有初始化
// var array:[Int]
// // 给数组进行初始化
// array = [Int]()
// 以上两句代码可以合并成一句
var array = [Int]()
print("初始容量 \(array.capacity)")
for i in 0..<8 {
array.append(i)
print("\(array) 容量 \(array.capacity)")
}
}
// MARK: - 数组的增/删/改
func demo3() {
// OC 中数组分可变NSMutableArray(var) 不可变 NSArray(let)
var array = ["张三","小芳","小羊"]
// 追加元素
array.append("老王")
print(array)
// 修改,通过下标定位
array[0] = "小王"
print(array)
// 数组越界 - Index out of range
//array[5] = "XXXX"
//print(array)
// 删除
array.remove(at: 3)
print(array)
// 删除全部,并且保留空间
array.removeAll(keepingCapacity: true)
print("\(array) \(array.capacity)")
}
// MARK: - 数组的遍历
func demo2() {
let array = ["张三","小芳","小羊"]
// 1.按照下标遍历
print("--- 按照下标遍历")
for i in 0..<array.count {
print(array[i])
}
// 2.for in 遍历元素
print("--- 按照下标遍历")
for s in array {
print(s)
}
// 3. enum block 遍历, 同时遍历下标和内容
print("--- 同时遍历下标和内容")
// 元组
for e in array.enumerated() {
print("\(e.offset) \(e.element)")
}
// 4. 遍历下标和内容2
print("--- 遍历下标和内容2")
// n 就是索引下标
// s 就是[String] 数组 n 对应的 String 元素
// 其中 n / s 的名字可以随便写
for (n,s) in array.enumerated() {
print("\(n) \(s)")
}
// 5. 反序遍历
print("--- 反序遍历")
for s in array.reversed() {
print(s)
}
// 6. 错误的反序索引&内容
print("--- 错误反序索引&内容")
for (n,s) in array.reversed().enumerated() {
print("\(n) \(s)")
}
// 7. 正确的反序
print("--- 正确反序索引&内容")
// 先枚举,再反序
for (n,s) in array.enumerated().reversed() {
print("\(n) \(s)")
}
}
// MARK: - 数组的定义
func demo1() {
// OC 使用[] 定义数组,Swift一样,但是没有'@'
// 自动推导的结果[String] -> 表示数组中存放的都是String
// 跟OC 中的数组指定泛型类似
let array = ["张三","小芳","小羊"]
print(array)
// [Int] -> 表示存放的都是Int
// Swift 中基本数据类型不需要包装!
let array2 = [1,2,3,4,5]
print(array2)
// CG结构体
let p = CGPoint(x: 10, y: 300)
// [CGPoint]
let array3 = [p]
print(array3)
// 混合数组: 开发中几乎不用,因为数组是靠下标索引
// 如果数组中的类型不一致,自动推导的结果[NSObject]
// 在Swift 中还有一种类型[AnyObject] -> 任意对象
// 在Swift 中一个类可以没有任何‘父类’
NSValue(cgPoint: p)
let array4 = ["张三",1,NSValue(cgPoint: p)] as [Any]
print(array4)
}
}
// ViewController.swift
// 011-数组
//
// Created by 庄壮勇 on 2018/1/3.
// Copyright © 2018年 Personal. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
demo5()
}
// MARK: - 数组的合并
func demo5() {
var array:[Any] = ["张三","小芳","小羊"]
let array2 = ["老刀","1","2",180] as [Any]
// 将array2 的内容合并到 array
// ***注意: 要合并数组的类型必须一致
array += array2
print(array)
}
// MARK: - 数组的容量
func demo4() {
// 定义一个数组,指定类型是 存放Int 的数组,但是没有初始化
// var array:[Int]
// // 给数组进行初始化
// array = [Int]()
// 以上两句代码可以合并成一句
var array = [Int]()
print("初始容量 \(array.capacity)")
for i in 0..<8 {
array.append(i)
print("\(array) 容量 \(array.capacity)")
}
}
// MARK: - 数组的增/删/改
func demo3() {
// OC 中数组分可变NSMutableArray(var) 不可变 NSArray(let)
var array = ["张三","小芳","小羊"]
// 追加元素
array.append("老王")
print(array)
// 修改,通过下标定位
array[0] = "小王"
print(array)
// 数组越界 - Index out of range
//array[5] = "XXXX"
//print(array)
// 删除
array.remove(at: 3)
print(array)
// 删除全部,并且保留空间
array.removeAll(keepingCapacity: true)
print("\(array) \(array.capacity)")
}
// MARK: - 数组的遍历
func demo2() {
let array = ["张三","小芳","小羊"]
// 1.按照下标遍历
print("--- 按照下标遍历")
for i in 0..<array.count {
print(array[i])
}
// 2.for in 遍历元素
print("--- 按照下标遍历")
for s in array {
print(s)
}
// 3. enum block 遍历, 同时遍历下标和内容
print("--- 同时遍历下标和内容")
// 元组
for e in array.enumerated() {
print("\(e.offset) \(e.element)")
}
// 4. 遍历下标和内容2
print("--- 遍历下标和内容2")
// n 就是索引下标
// s 就是[String] 数组 n 对应的 String 元素
// 其中 n / s 的名字可以随便写
for (n,s) in array.enumerated() {
print("\(n) \(s)")
}
// 5. 反序遍历
print("--- 反序遍历")
for s in array.reversed() {
print(s)
}
// 6. 错误的反序索引&内容
print("--- 错误反序索引&内容")
for (n,s) in array.reversed().enumerated() {
print("\(n) \(s)")
}
// 7. 正确的反序
print("--- 正确反序索引&内容")
// 先枚举,再反序
for (n,s) in array.enumerated().reversed() {
print("\(n) \(s)")
}
}
// MARK: - 数组的定义
func demo1() {
// OC 使用[] 定义数组,Swift一样,但是没有'@'
// 自动推导的结果[String] -> 表示数组中存放的都是String
// 跟OC 中的数组指定泛型类似
let array = ["张三","小芳","小羊"]
print(array)
// [Int] -> 表示存放的都是Int
// Swift 中基本数据类型不需要包装!
let array2 = [1,2,3,4,5]
print(array2)
// CG结构体
let p = CGPoint(x: 10, y: 300)
// [CGPoint]
let array3 = [p]
print(array3)
// 混合数组: 开发中几乎不用,因为数组是靠下标索引
// 如果数组中的类型不一致,自动推导的结果[NSObject]
// 在Swift 中还有一种类型[AnyObject] -> 任意对象
// 在Swift 中一个类可以没有任何‘父类’
NSValue(cgPoint: p)
let array4 = ["张三",1,NSValue(cgPoint: p)] as [Any]
print(array4)
}
}