實訓(xùn)第一周心得
第一天
- FirstDay-Lesson1
- 老師介紹了playground的使用方法,以及各種功能,
- 以下是第一節(jié)課所學(xué)習(xí)的代碼
//自動類型推斷 var 定義變量
var str = "Hello, playground"
//let 定義常量(不能修改的量)
let name = "Hello,playground"
//數(shù)據(jù)類型
//字符串
let name1 : String = "Lanou"
//字符
let gender : Character = "M"
//整型
let age :Int = 12
//浮點型
let height : Float = 12.2
//雙精度浮點型
let height1 : Double = 12.222
//字符串
//長度
let length = name.characters.count
//拼接
var name3 = name + "pin\(123)jie"
print("name = \(name3)")
let index = name.index
//遍歷
for item in name3.characters {
}
//切割
var school = "Jininshifan"
let index1 = school.index(school.startIndex,offsetBy:2)
let newSchool = school.substring(to:index1)
print(newSchool)
//數(shù)組
var arr = [1,2,3]
var arr1 : [Int] = [Int]()
//增加元素
arr1.append(2)
//刪除元素
let element = arr1.remove(at:0)
//更新元素
arr[1] = 22
print(arr)
//字典
var dic: [Int: Int] = [1:1, 2:2]
// 添加,更新
dic[1] = 2 //更新
dic[3] = 3 //添加
//刪除
dic.removeValueForKey(1)
print(dic)
//rang
let student = "yl"
let startIndex = student.index(student.startIndex,offsetBy :2)
let endIndex = student.index(student.endIndex,offsetBy:-2)
let rang = startIndex..<endIndex
student.substring(with:rang)
- Firstday-Lesson2
- 這節(jié)課學(xué)習(xí)了數(shù)組的三種遍歷方式
- 以及冒泡排序
/*
數(shù)組的三種遍歷方法
一:
for item in names{
print(item)
}
二:
//index 索引 item 獲取的值
for(index,item)in names.enumerated(){
print("index = \(index),item = \(item)")// “ \\ ”轉(zhuǎn)義字符
}
三:
for i in 1...<10{
print(i)
}
*/
//冒泡排序
var arr = [2,8,4,10,31,20]
//冒泡
for i in 0..<arr.count - 1 {//循環(huán)多少輪
for j in 0..<(arr.count - i - 1){//比較多少次
//比較換位置
if (arr[j] > arr[j+1]){
let temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
}
print (arr)
- Firstday-Lesson3
- 第三節(jié)課砰琢,簡單介紹了類的定義,強制拆包(解析)以及可選類型等。
類的定義
/*
class 類名:父類{
}
*/
class Node :NSObject {
// 勉耀!強制拆包(解析)
var data: Int!
// ?可選類型
var leftChild : Node?
var rightChild :Node?
}
var name: String?
print(name!)
- Firstday-Lesson4
- 第四節(jié)課蹋偏,介紹了一個相當(dāng)于數(shù)列的題型便斥,
- 還有函數(shù)的參數(shù)及返回值等
- 不定參數(shù)
- 聲明一個inout 函數(shù),并且將傳進來的值進行交換
class Node : NSObject {
var data : Int! // 強制拆包
var leftChild : Node? //可選類型
var rightChild : Node?
//類中只能寫變量和函數(shù)
}
var node1 : Node = Node()
node1.data = 4
var node2 : Node = Node()
node2.data = 5
var node3 : Node = Node()
node3.data = 6
var node4 : Node = Node()
node4.data = 7
var node5 : Node = Node()
node5.data = 2
node5.leftChild = node1
node5.rightChild = node2
var node6 : Node = Node()
node6.data = 3
node6.leftChild = node3
node6.rightChild = node4
var node7 : Node = Node() //根節(jié)點
node7.data = 1
node7.leftChild = node5
node7.rightChild = node6
func readData(node : Node){
var arr = [Node]() //創(chuàng)建數(shù)組
arr.append(node)
while arr.count > 0{
let temp = arr[0]
if let _ = temp.leftChild{ //可選綁定
arr.append(temp.leftChild!) //左邊孩子裝進數(shù)組
}
if let _ = temp.rightChild {
arr.append(temp.rightChild!)
}
print(temp.data)
arr.remove(at: 0) //讀取完第一個元素的時候刪除
}
}
readData(node: node7)
//函數(shù)
//1 無參無返回值
func fun1() {
print("無參數(shù)無返回值")
}
fun1() //調(diào)用
//2威始,無參數(shù)有返回值
func fun2() -> Int{
print("無參數(shù)有返回值")
return 0
}
fun2()
//3,有參數(shù)有返回值
func fun3() {
print("有參數(shù)有返回值")
}
fun3()
//4,有參數(shù)無返回值
func fun4() {
print("有參數(shù)無返回值")
}
fun4()
//不定參數(shù)
func func5 (parm : Int...) {
var result: Int = 0
for i in parm {
result += i
}
print(result)
}
//聲明了一個inout 函數(shù) (有兩個參數(shù)) 并且將傳進來的值進行交換
func fun6(a : inout Int, b: inout Int) {
let temp = a
a = b
b = temp
}
var a = 10
var b = 20
fun6(a: &a,b: &b)
print("a = \(a) b = \(b)")
第二天
- SecondDay-Lesson1
- override 重寫父類枢纠,init 初始化方法
- deinit 析構(gòu)函數(shù)
- 類的存儲屬性和計算屬性
- lazy 屬性
class Student : NSObject {
var name : String?
var age : Int?
var gender : Bool?
//override 重寫父類
override init() { //初始化方法
print("創(chuàng)建了一個學(xué)生對象")
}
init(age : Int, gender : Bool,name : String) {
super.init()
self.age = age
self.gender = gender
self.name = name
}
deinit { //析構(gòu)函數(shù)
print("對象釋放")
}
}
var st : Student = Student(age: 12, gender: false, name: "22")
print("st.name = \(st.name) st.gender = \(st.gender) st.age = \(st.age)")
// 類
class Person : NSObject {
var name : String? // 存儲屬性
var age : Int? // 存儲屬性
//計算屬性
var fatherAge : Int {
set { // newValue是默認(rèn)值
self.age = newValue - 20
}
get {
return self.age! + 20
}
}
// lazy 屬性
lazy var st : Student = Student()
//函數(shù)
func eat() {
print("吃飯")
}
//
class func happy() {
print("happy")
}
static func study() {
print("學(xué)習(xí)")
}
//類屬性
static var fatherName : String?
}
//結(jié)構(gòu)體 //1.結(jié)構(gòu)體不能繼承 //2,結(jié)構(gòu)體是值類型字逗,類是引用類型
struct Dog {
var name : String?
}
var p : Person = Person()
//print(p.st)
p.name = "張三"
var dog : Dog = Dog()
dog.name = "汪柴"
var p1 = p
var dog1 = dog
p1.name = "李四"
dog1.name = "大黃"
print("p.name = \(p.name) dog.name = \(dog.name)")
- SecondDay-Lesson2
- 這節(jié)課學(xué)習(xí)了協(xié)議
- 學(xué)習(xí)了用協(xié)議求出三角形京郑,正方形,長方形的面積葫掉,周長些举。
//定義一個協(xié)議
protocol PersonProtocol {
func study()
}
//可選協(xié)議
@objc protocol StudentProtocol {
@objc optional func happy()
var name1 : String{set get}
}
class Person : NSObject,PersonProtocol,StudentProtocol{
//internal var name1: String = ""
var newname : String?
var name1: String {
get {
return self.newname!
}
set {
self.newname = newValue
}
}
func study() {
}
}
//三角形
//正方形
//長方形
protocol TuxingProtocol {
func MJ() -> Float
func ZC() -> Float
}
class ThreeAngle:NSObject,TuxingProtocol {
var height : Float!
var d : Float!
func MJ() -> Float {
return height * d / 2.0
}
func ZC() -> Float { //等邊三角形
return d * 3;
}
}
class FourAngle: NSObject,TuxingProtocol{
var b : Float!
func MJ() -> Float {
return b * b
}
func ZC() -> Float {
return b * 4
}
}
class zeroAngle:NSObject,TuxingProtocol{
var radio :Float!
func MJ() -> Float {
return radio * radio * 3.14;
}
func ZC() -> Float {
return radio * 2 * 3.14
}
}
var t : ThreeAngle = ThreeAngle()
t.d = 3
t.height = 4
print("三角形的面積是:\(t.MJ())")
print("三角形的周長是:\(t.ZC())")
- SecondDay-Lesson3
- 設(shè)置代理,并且學(xué)習(xí)了男孩女孩購物的題型
- 練習(xí)了文件下載:開始俭厚,結(jié)束户魏,錯誤等的題型
//文件類
protocol FileProtocol {
func Begin() ;
func Xzz() ;
func End() ;
func Error() ;
}
class File : NSObject {
var delegate : FileProtocol?
override init() {
}
//開始
func FileBegin() {
if let _ = delegate {
delegate?.Begin()
}
}
//下載過程中
func FileXzz() {
if let _ = delegate {
delegate?.Xzz()
}
}
//結(jié)束
func FileEnd() {
if let _ = delegate {
delegate?.End()
}
}
//發(fā)生錯誤
func FileError() {
if let _ = delegate {
delegate?.Error()
}
}
}
//處理文件類
class MakeFile : NSObject,FileProtocol {
internal func Error() {
print("下載發(fā)生錯誤")
}
internal func End() {
print("下載結(jié)束")
}
internal func Xzz() {
print("文件正在下載")
}
internal func Begin() {
print("下載開始")
}
//把四種狀態(tài)傳遞過來
/*func Begin() {
print("下載開始")
}
func Xzz() {
print("文件正在下載")
}
func End() {
print("下載結(jié)束")
}
func Error() {
print("下載發(fā)生錯誤")
}*/
}
let file : File = File()
let makefile : MakeFile = MakeFile()
file.delegate = makefile
file.FileBegin()
file.FileEnd()
file.FileXzz()
file.FileError()
- ThirdDay-Lesson1
- 泛型,打印數(shù)字挪挤,打印字符串叼丑,打印字符
- 閉包
- 冒泡排序以及調(diào)用
//泛型
//打印數(shù)字 打印字符串 打印字符
func MyPrintNumber(parm:Int) {
print(parm)
}
func MyPrintString(parm:String) {
print(parm)
}
func MyPrintCharacter(parm:String) {
print(parm)
}
//使用泛型之后一個就可以了
func MyPrint<T>(parm :T) {
print(parm)
}
//閉包
func sort(num: Int,num1: Int) -> Bool {
//if num >num1 true 否則 false
return num > num1 ? true : false
}
//定義一個變量 把sort賦值給變量
let fun : (Int,Int)->Bool = sort
//使用變量調(diào)用函數(shù)
let result = fun(1,2)
//print(result)
//冒泡排序
var arr = [10,2,5,2,9,2,5,6]
func sortArr(parm:(Int,Int)->Bool) {
for i in 0..<arr.count - 1 {
for j in 0..<arr.count - 1 - i {
if (parm(arr[j],arr[j+1])) {
let temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
}
}
sortArr(parm: sort)
print(arr)
func sort1(num:Int,num1:Int) -> Bool {
return num < num1 ? true : false
}
//調(diào)用
sortArr(parm: sort1)
print(arr)
let block = { (a : Int,b : Int) -> Bool in
return a > b ? true : false
}
sortArr(parm: block)
- ThirdDay-Lesson2
- 這節(jié)課進行了小測試
//第一題 對一個數(shù)組進行遍歷,要求使用兩種方式扛门。(數(shù)組自定義)
/*
var arr = [2,4,5,7,6,8,1]
/*1,
for name in arr {
print(name)
}
*/2,
for(index, item)in arr.enumerated() {
print("index = \(index), item = \(item)")
}
/*3,
for index in 0..<arr.count {
print(arr[index])
}
*/
*/
//第二題 聲明一個函數(shù)鸠信,要求函數(shù)功能要實現(xiàn)對一個數(shù)組的排序,并且把這個數(shù)組返回论寨。(冒泡排序)
/*
func fun(num : Int,num1 : Int) -> Bool {
return num > num1 ? true : false
}
let fun2 : (Int,Int)->Bool = fun
//let result = fun2[1,2]
var arr = [3,5,14,6,8,43]
func fun2Arr(parm :(Int,Int)->Bool) {
for i in 0..<arr.count - 1 {
for j in 0..<arr.count - 1 - i {
if (parm(arr[j],arr[j+1])) {
let temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
}
}
fun2Arr(parm: fun)
print(arr)
*/
//第三題 聲明一個inout函數(shù)星立,這個函數(shù)有兩個參數(shù),并且實現(xiàn)交換傳遞進來的參數(shù)值葬凳。
/*
func fun(a : inout Int, b : inout Int) {
let temp = a
a = b
b = temp
}
var a = 10
var b = 20
fun(a : &a,b : &b)
print("a = \(a) b = \(b)")
*/
/*
第四題 實現(xiàn)圖書管理系統(tǒng):(60分)
1绰垂、使用數(shù)組管理所有書籍。
2火焰、數(shù)組可以添加劲装、刪除。
3、可以從數(shù)組根據(jù)書名查找書籍占业,并修改書籍的價格绒怨。
4、展示所有書籍清單(書名)纺酸。
提示:
(1)聲明一個書類: Book
給這個類添加: 書名,價格的屬性
(2)聲明一個管理書籍類: BookManger
給這個類添加:添加,刪除,修改書籍價格,展示所有書籍的方法
*/
struct Book {
var name : String?
var price : Float?
init(name : String, price : Float) {
self.name = name
self.price = price
}
}
class BookMgr : NSObject {
lazy var BookArr : [Book] = [Book]()
func addBook(book : Book) {
self.BookArr.append(book)
}
func deleteBook(name : String) -> String {
//查找這本書
var isExit = false //不存在的
for (index, item) in BookArr.enumerated() {
if item.name == name {
self.BookArr.remove(at: index)
isExit = true
}
}
return isExit ? "刪除成功" : "刪除失敗"
}
func updatePrice(price:Float,withName Name:String) -> String {
var isExit = false
//先查找圖書
for(index,item)in BookArr.enumerated() {
if item.name == Name {
//修改價格
BookArr[index].price = price
isExit = true
}
}
return isExit ? "修改成功" : "修改失敗"
}
//展示所有的書籍的清單
func showAllName() {
for item in BookArr{
if let _ = item.name{
print(item.name! + "價錢為\(item.price)")
}
}
}
}
let book = Book(name:"zhangsan",price:10.1)
let book2 = Book(name:"zhangsan",price:10.2)
let book3 = Book(name:"zhangsan",price:10.3)
let book4 = Book(name:"zhangsan",price:10.4)
let mgr = BookMgr()
mgr.addBook(book: book)
mgr.addBook(book: book2)
mgr.addBook(book: book3)
mgr.addBook(book: book4)
print(mgr.deleteBook(name: "zhangsan"))
print(mgr.updatePrice(price: 2, withName: "lisi"))
mgr.showAllName()
- ForthDay-Lesson1
- 今天學(xué)習(xí)了UI窖逗,學(xué)習(xí)了UIView的很多屬性,
//獲取當(dāng)前控制器的view餐蔬,設(shè)置背景顏色為紅色
//self.view.backgroundColor = UIColor.red
//iPhone6視圖 :x = 375 y = 667
//設(shè)置坐標(biāo)大小
/*let rect = CGRect(x: 30, y: 30, width: 100, height: 100)
let subview : UIView = UIView(frame: rect)
subview.backgroundColor = UIColor.green
//添加到父視圖上
self.view.addSubview(subview)
let subView1 = UIView()
subView1.frame = CGRect(x: 140, y: 240, width: 100, height: 100)
subView1.backgroundColor = UIColor.yellow
self.view.addSubview(subView1)
//frame 相當(dāng)于父視圖的
//bounds 相對于自身的坐標(biāo)
print(subView1.bounds)
*/
//center
let subview3 = UIView()
self.view.addSubview(subview3)
subview3.frame = CGRect(origin: self.view.center, size: CGSize(width: 100, height: 100))
subview3.backgroundColor = #colorLiteral(red: 0.8078431487, green: 0.02745098062, blue: 0.3333333433, alpha: 1)
//透明度
//subview3.alpha = 0.1 //
subview3.backgroundColor = UIColor(colorLiteralRed: 0.5, green: 0.5, blue: 0.5, alpha: 0.5)
let subview4 = UIView(frame: CGRect(x: 10, y: 10, width: 40, height: 40))
subview4.backgroundColor = #colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)
subview3.addSubview(subview4)
//tag 使用2000以上的
subview4.tag = 10001
//subview4.isHidden = true //隱藏
let TagView = subview3.viewWithTag(10001)
print("subview4 = \(subview4), TagView = \(TagView)")
//用戶交互
//self.view.isUserInteractionEnabled = false
// superView 父視圖
print("superView = \(subview4.superview),subview3 = \(subview3)")
//子視圖
for item in self.view.subviews {
//從父視圖上移除
item.removeFromSuperview()
}
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("點擊了當(dāng)前控制器")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
總結(jié)就先到此為止碎紊,不斷學(xué)習(xí)不斷記錄,
希望付出會有回報
最后樊诺,感謝藍(lán)鷗楊少鋒老師的不吝傳授仗考!
敬禮··