在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Swift基于cocoa Touch框架,苹果官方为了保证Swift的可靠性,结合多种语言的特性,同时独立了一套属于自己的单独语言,结合了C,C++,OC,Java等语言。 基本变量: 1 . swift具有倒推功能,它能够更具结果推算出对应swift语言中的类型 let: 定义常量,必须进行一次精确赋值 var:定义变量,可以进行多次赋 var variable: String = "vairable" let const:Int = 250 同类变量Int32 Int64 //String 为变量类型,Int为常量类型,默认是可以省略的,但是Swift变量容易混淆,后续发生更改的时候报错就很难修正,建议最好不要省略; var variable: Characters = "A" // Characters 属于字符,如果此处不定义Characters类型,Swift反推类型时会优先自动定义为String类型,所以在定义Character(字符)类型的变量时候一定要加上:Charaters 定义。 它类似于C中的char 2. 对象创建,Swift改版后需要对象的方法直接改成了 点语法 格式 // 原来OC设置参数主要通过setXXX,或者 点语法,而Swift中主要采用(参数名字: 参数...) 的形式,而且括号里面的参数可以嵌套 let view = UIView(frame: CGRect(x: 100, y: 200, width: 300, height: 400)) view.backgroundColor = UIColor.redColor() let btn = UISwitch(); //直接使用 类名+() 初始话实例对象 //对象的 点语法 照样适用 btn.setOn(true, animated: true); btn.center = CGPoint(x: 50, y: 50) view.addSubview(btn) 3. 基本数据类型 max, min分别表示该类型的最大数值和最小数值 var i:Int; i = 100; Int.min; Int.max; sizeof(Int) var ui:UInt; UInt.min; UInt.max; var i8:Int8; Int8.max; Int8.min; var ui8:UInt8; UInt8.max; UInt8.min; var f1:Float isinfinity Float32 Float Float64 Float80 Double //tpypealias 重新可以将类型进行更名 typealias MyFloat = Float32 var f6:MyFloat 4. 常用方法 /**void属于无,返回值,参数,主要占位使用*/ sizeof(Void) /**swift的中的Bool取值只有ture和false,不再具备OC语言的非0及真*/ sizeof(Bool) 字符代表某些Unicode字形集群规范所定义的本地化,或者定制的分割算法。一种特 殊的制服*/ sizeof(Character) 9bit sizeof(String) 24bit 4 /**在c语言中,0代表8进制,在c语言中中015代表15,被swift忽略掉*/ var x = 15 x =015 x = 00005 x = 100_000_000_000 x = 185_ 8843_1460 x = 0b1110111 x = 0o15 x = oxff00ff00 y = 1.25E-2 5. string and characters: print(str) //打印变量 if secondStr.isEmpty{ print(“secondStr is empty”) secondStr += “abcd” //字符串相加 } //通过字符数组 创建字符串 [String] 字符串数组,如果是放的字符,需要进行类型标注 var catCharaters:[Character] = [“C”,”a”,”t”] var catString = String(catCharaters) /**双引号转意字符 \"*/ var myStr = "\"哦耶啦啦\"---爱因斯坦" print(myStr)
//格式化拼接,前面使用格式化,后面使用数组 var timeStr2 = String(format: "%02d:%02d:%02d", arguments: [hour,minute,second])
6. 值类型与引用类型 /** 1.值类型和引用类型,Swift中所有的结构体都是值类型 2.所有的类类型都属于引用型 3.String 值类型(结构体) 4.引用类型地址完全一样,Swift中引用类型常使用public class定义 5.值类型,及结构体类型,赋值后左右两边的地址不一样 */
7. 运算符: var a,b,c,d a =10, b = 2 a = b = c = d =100; Swift赋值运算本质属于一个函数,返回值为void类型 ❌ a + b a - b a * b a/b -9/4 9/4 a > b a < b a !=b a > b ? a:b a +=b var z:Int ? 规则: -》Swift赋值运算本质属于一个函数,且返回值为viod类型,所有不能进行连等 -》Swift可以向C语言那样进行+/-* mod运算,取mod符号以除数为准 -》a++先取a再运算;++a,先运算再取a -》var z:Int ? 其中?为选择类型,这样z可以赋值为????,也能进行打印 -》 var r = z ! = nil ? z :0 等价于 var r = z ?? 100 -》 a > b && b < c a > b || b < c !(a>b) 此处你会惊奇的发现 变量c 没有经过初试化缺依然编译通过,需要注意这个坑。这是因为当含有c变量的不等式在前编译器可以检测出来;当含有c变量的不等式在后则编译侥幸通过,但是千万别以为c就可以使用了,如果使用未初始化变量后面程序会崩溃。
控制语句大体可以分为以下三种 分枝,循环,跳转(一般不用) 8. 多分枝If语句 var score = 90 if score > =90 { print(“A”) }else if score >= 80 { print(“B”) }else score >= 60 { print(“C”) }else{ print(“不及格”) }
9. with type,可以不带括号;可以不带break,default下放必须要加上一个逻辑;没有隐式贯穿,如果需要往下执行则使用fallthrough;定义变量不在需要大括号 var b =2 switch b { case 1: print(“1”) case 2: var y =123 print(“2”) if b ==2 { break } case 3: print(“3”) default: print(“x is other”) }
10. for 循环的基本用法,可以省略括号,可以使用 _ 省略变量,可以使用for in var y =100; var z =200 /*注意i ++ 时候一定需要有空格*/ for var i = 0;i <10; i++ { print(i) } for index in 1…10 { print(index) } for _ in 1…5 { print(“下划线参略变量,直接循环” ) }
11. for 循环 for ch in str1.characters { print(“1—\(ch)”) } var i = 0 while i < 10 { print(“i—\(i)”) ; i++ } 12. do while 中,do被征用做了异常代码处理 repeat{print(“i —\(i)” i++)} while i < 9 13 . break 和 continue 与c 的基本用法一致,break结束循环,continue 结束本次循环
/**结束循环*/ for var i = 0;i<10;i++ { print("i=\(i)") if i == 4 { break } }
/**统计 a e i o u之外的字符有多少个*/ let message = "a place where people can play" var count = 0 for ch in message.characters { switch ch { case "a","e","i","o","u": continue default: count++ } } 14. loop: 标签, 当你看到一个 xxx: 且该行前面没有代码的东西时,注意,它是一个标示符号。类似于C语言中的goto语句定义的表示,但比那个强大的多,下面通过这两个例子来说明。 /**标签语法,替代了c语言的goto语句*/ var a = 0 loop:while a < 100 { a++ switch a { case 20: break loop //loop标记循环,break将当前循环停止下来 ,此处直接跳出了while循环(loop:定义在while前面) default: print("a=\(a)") } }
还有更强大的呢,看到没,甭管你有多少重循环,都能一次跳出,太给力了。 /**标准100次循环,在 j == 3的时候通过标签语句借宿外层循环,而不是内层循环*/ outloop:for var i = 0;i<10;i++ { for var j = 0;j<10;j++ { if j == 3 { //break outloop continue outloop } print(j) } }
|
请发表评论