主要记录xcode下swift个人学习笔记
// Playground - noun: a place where people can play import UIKit //变量 var a = 10 var b = 5 //常量 ,不可改变值 let c = a+b // c = 5 //error: cannot assign to value: 'c' is a 'let' constant c = 5 print(c) //类型 字符串 var str = "Hello " //指定类型,没有必要,除了特殊情况,有自动类型推断 var s1:String = "Wrold" var i:Int = 0 //整数 print(str+s1) Int.max //9,223,372,036,854,775,807 Int8.max //127 Int8.min //-128 UInt8.max // 无符号 255 // swift 默认 Int 只鼓励使用 Int let a1 : Float = 3.14 //Float 32位 精度 6 位 let b1 : Double = 3.141592657532 // 64位 精度 6 位 //默认 Double // boolean true or false var isOk = false //元组 多个值的随意组合,在括号内,逗号分开 ("slack",55,"QQ会员",9) let slack = (user:"slack",account:300,tilte:"QQ会员") slack.tilte // "QQ会员" 根据key名 slack.1 // 300 根据序号 //用与多个变量交换值 var (a2, b2, c2) = (1,2,3) (a2,b2,c2) = (b2,c2,a2) //a2 2 ,b2 3, c2 1 //可选变量 optional ? 标识 可选变量为空或者 false 时,if 里不执行 var myName:String?="slack" if let name=myName{ print("hello \(name) ...") } var address:String?="address..." //var address:String? // 默认 nil if address == nil { print("no address") }else{ // 可选拆包,把变量的值解压出来,变量后加 ! print(address!)//address... } // 操作符 i = 5 //赋值 -i //-5 i++ //5 i //6 // + - * / % 3.4 / 0.2 // 17 swift可以小数 相除 9 % 2.5 // 1.5 i += 3 //组合赋值 9 ( i=6) i /= 3 // 3 // 比较操作符 3 == 3 //true 5 >= 6 //false var 红绿灯 = "红" if( 红绿灯 == "红"){ print("禁止通行") }else{ print("可以通行") } //红绿黄 0 1 2 var 红绿灯1 = 2 if( 红绿灯1 > 0){ print("可以通行") }else{ print("禁止通行") } // ! 取反 && 与 || 或 let ( 高,大,上) = (true,true,false) if(上 || (高 && 大 && (!上) ) ){ print("welcome") }else{ print("No") } // String字符串 Character字符 //字符串连接 str = str + "slack" str.isEmpty // false null? var char : Character = "A" //字符要指名,默认是字符串 //特别有意思的字符串连接 \(引用已有的) str = "\(str),fdajgf,\(100)" print(str) // Unicode 汉字编码,编码号百度咯 "\u{5154}" //兔 str.startIndex// 0 str.endIndex// 22 str[str.startIndex] // str = Hello slack,fdajgf,100 str[str.startIndex.successor()]// 后一个索引 str[str.startIndex] str[str.endIndex.predecessor()]// 最后一位 前一个索引 predecessor() // modify String 我的测试环境的问题,error //str.insert("A", atIndex: str.endIndex) //str.removeAtIndex(str.endIndex.predecessor()) // compare string with == or != //数组 var arr = ["hello","slack",str,100,20.3] // 啥类型都可以放 print(arr) //空数组 var arr1 = [] //特定类型的空数组 var arr2 = [String]() //循环 1--100 append 添加 for index in 0...100{ arr2.append("Item\(index)") } print(arr2) //[Item0, Item1, Item.... //遍历 arr数组 for value in arr{ print(value) } // insert arr2.insert("hello", atIndex: 0) arr2 // "hello", "Item0", "Item1", "Item2"... // remove arr2.removeAtIndex(2) arr2 //"hello", "Item0", "Item1", "Item2"... //count 计数 i = 0 while i < arr.count { print(arr[i]) i++ //error } // 闭区间 a...b 1...100 // 半开区间 a..<b 1..<101 ///流程控制 判断分支 for index in 0...100{ if(index%2==0){ print(index) } } // set 值无序不重复 测试环境不识别Set count isEmpty insert remove contains //sort -->数组 // 集合 交 差 并 补 //a.intersect(b) a.subtract(b) a.union(b) a.exclusive(b) //集合关系 子集 父集 // isSubsetOf (子集,可以相等) isStrictSubsetOf (严格子集: 集合 a > b) // isSupersetOf (父集) isStrictSupersetOf (严格父集) // isDisjointWith 无交集 //let 身份证号 : Set<String> = ["123","345","12x"] //let ID : Set = ["123","345","12x"] //字典 遇到缩写时使用 key 唯一,值无序可重复 var dict = ["name":"slack","age":"16"] dict["sex"]="male" print(dict) // 获取 print(dict["name"]) dict.count // 3 dict.isEmpty // false //update dict.updateValue("Slack", forKey: "name") // remove dict.removeValueForKey("sex") //for循环对字典遍历 for (key,value) in dict{ print("\(key),\(value)") } // 健值对分离成数组 var keys = [String](dict.keys) var values = [String](dict.values) //continue break out:1 2 4 5 for i in 1...6{ if i == 3 { continue // 结束本次循环 } print(i) if i == 5 { break //结束所有循环 } } //guard 早退语句 必须条件不满足的早阶段退出 like if ///函数 func sayHello(name:String){ print("hello \(name)") } sayHello("slack") //函数可以返回多个值(元组),很有意思,需要指明返回值类型 func getNums() -> (Int ,Int){ return (2,3) } let (num1,num2) = getNums() getNums().0 // 2 print(num2) // 3 //函数当变量使用 var fun = sayHello fun("slack ") ///面向对象 class Hi{ func sayHi(){ print("Hi ") } } //还可以继承 class Hello:Hi{ var _name:String //构造方法 init(name:String){ self._name = name print("Hello init...") } //可以重写方法 override func sayHi(){ print("hello slack \(self._name)") } } var hi = Hi() hi.sayHi() var h = Hello(name:"Zzzz") h.sayHi() //不定数参数 参数任意个 求和 func sum(numbers : Int...) -> Int { var result = 0 for number in numbers{ result += number } return result } sum(1,2,3,4,5,6) // 21 // 函数返回值,把函数类型作为一个返回值 func add1 (a: Int) -> Int { return a + 1; } func sub1 (a: Int) -> Int { return a - 1; } // 包装 根据条件去不同函数 func addOrSub1(正数:Bool) -> (Int) -> (Int) { if 正数 { return add1 }else { return sub1 } } addOrSub1(true)(5) // 6 addOrSub1(false)(5) // 4 print() // struts class struct Resolution{ var width = 0 var height = 0 } class VideoMode{ var resolution = Resolution() var interlaced = false var frameRate = 0.0 var name: String? func description(){ print("name:\(name) frameRate:\(frameRate) resolution:\(resolution) interlaced:\(interlaced)") } } let mode = VideoMode() mode.name = "1080p HD" mode.frameRate = 30.0 mode.description() ///开发ios项目