好久都没有来这个熟悉而又陌生的地方啦, 想想已经有两三个月了吧,不过我相信以后还是会经常来的啦,因为忙碌的学习已经过去啦,剩下的就是要好好的总结好好的复习了,好好的熟悉下我们之前学习的知识点,将他们有条理的串联起来.
在之前的将近三个月里面,不管是忙碌还是怎么样吧, 也许在有些人看来这是非人的生活,但是内个人都有自己的过法吧,面对自己从未接触过的代码和语法,刚开始确实是有那么一点点的害怕,但是慢慢的就没有那种感觉了,渐渐的也发现其实敲代码并没有那么的可怕,也没有那么的难。经过三个月与代码的磨合我发现自己已经不再讨厌,不再抗拒他了,也可以说是对他产生了兴趣吧,我发现自己内心深处开始有种强烈的欲望,也有种不停呼唤的声音那就是监督着我,并时刻提醒着我一定要把iOS学好,不可以令那些在乎我关心我的人失望伤心。下面就来对我们学过的知识做个小小的知识链吧!
在刚开始入班的时间,本以为只有我一个不是本专业的,但是渐渐的发现,其实并不是那样的,有好多都不是本专业的,也有好多和我一样都是零基础的,所以我开始有了自信,不过还好,刚开始我们以最最基础的C语言了步入了程序员阶段,然后伴随着将近一个月的C语言学习,便迎来了OC得学习,刚开始时间,看着黑板上面的英文字母,还真是一头雾水,慢慢的发现那些陌生的英文字母,语法等看着似乎有了感觉,并且也对他们产生了兴趣,开始想要好好的学习了,接下来也就是最最重要的UI阶段了,可以说UI使我们学习时间最长的一个阶段了,各种问题各种出,但是出现问题并不可怕,可怕地是有了问题还不问,不过这个说的不是我,因为我知道有问题不问,那就是对自己的不负责任,尽管有时间问的问题就如一加一一样那么的简单,可是那又怎样,我的目的是,不管简单还是复杂,我都要一一给他弄明白最后我基本上完成了我的目标,知道今天我做出了属于自己的第一款APP(当然目前正在审核阶段,预计本周就会出现在苹果商店中),直到今天,我们接触了全新的语言,那便是Swift语言,看着去年六月份刚出的语言,那面有种好奇的感觉,本以为会很难很难,可是事实并不是如此,也许是自己有了小小的底子吧,总而言之,我们学习的大致过程就是C语言--OC--UI阶段--Swift语言这几大块了,接下来就步入今天的主题吧:
今天是接触Swift语言的第一天,感觉充实而又快乐,下面我为大家分别介绍下Swift语言的几种语法以及注意事项。
一、Swift语言工程的创建
提到这里要和大家强调一下,Swift语言和OC与UI的创建不同,具体如下图:
箭头所指的方向,就是创建Swift工程的地方,紧挨着它的就是UI与OC工程所要用到的
二、Swift语言工程名称
对于Swift语言工程的名称和UI以及OC的都差不多具体如下:
第几第一步后会出现以下界面,图片左上角的箭头指向便是工程名字,右上角箭头则是所属平台,当然如果想要返回的话则只需点击左下角箭头所指方向的Cancel按钮即可,至于右下角的箭头则是下一步操作了,在点击Next(下一步),然后就可以愉快的完成Swift语言的书写了。
三、Swift语言的语法结构
首先需要说明的是Swift语言和C语言及OC和UI的语法结构不同,具体如下:
1、声明/定义变量及常量的方法:
//1.定义变量\常量(const define) //1.1定义变量, 使用var定义 var xiang = "xiang" println(xiang) //1.2定义一个常量 使用let定义 let qm = 213 let qq = "sadjflk" //1.3变量常量的命名规范:几乎支持所有的Unicode编码字符, 除了一些数字符号, 箭头, 横线, 以及系统的关键字 var ?? = "哈哈" println(??) //var var = "456" //2.基本类型 // 类型 浮点型 (双精度浮点 单精度浮点型) 波尔型 字符串 //C/C++语言: int float double bool char[] //zai Swift语言中, 基本类型几乎已经被重写了, 首字母大写 //Swift语言中的基本数据类型:Int Float Double Bool String //2.2 var zs = 123 let whq = "234" //[注]在Swift语言中, 声明变量/常量如果没有类型,而是直接赋值的话, 编译器会自动推断除常量/变量的类型 //2.3 命名常量和变量 变量/常量 : 类型名称 var lmt : String = "liumingtao" //let lgz : Int = "213" // 2.4 练习 var zwd : Int = 233 //在Swift中, 整型是Int, 系统默认64位, 如果系统是32位, 则默认为32 var wzb : Int8 = -128 // Int8的范围: -128~127qqq //[prc:]变量/常量 var hxw = "sjlfdasdjlk" var gz : String = "guozhong" var zhengxing : Int = 4564654 let wujie = 456 let hah = "45646" var rkf = 3.5 //[注:]在Swift中, 浮点类型默认为double var rly : Float = 2.5 var cj : Double = 2.6 let dfr = rly + Float(cj) //[注:]在Swift语言中不支持隐式转化, 可以进行显示转化 转化的方式: 类型(变量/常量)
2.数组及字典的声明和使用
//4.数组 Array //[注:]在OC中, 数组存放的元素都是基于NSObject类型的对象, 且对象类型可以不相同. 而在Swift中, 数组必须存放相同类型的对象 //定义一个数组 var lc : Array = [String]() lc let sxr : Array = [String]() //var 声明数组为 可变数组 //let声明数组为 不可变数组 //创建可变数组 var gst = ["郭松涛", "张国栋", "邵文乐"] //编译器会对类型进行数据推断, gst首先是一个Array的数组, 其次里面的数据, 是String的, 所以推断出是字符串数组 var ww = ["王伟", 24] //增 gst.append("豆培") gst.insert("徐军辉", atIndex: 1) gst //删 gst.removeLast() gst.removeAtIndex(1) gst.removeRange(Range(start: 1, end: 2)) gst //改 gst[0] = "马锐" gst //查 //1.根据下表访问 gst[1] //2.根据下表范围访问 //...表示一个闭区间 gst[Range(start: 0, end: 1)] gst[0...1] //..<表示一个开区间 gst[0..<1] //3.遍历 for name in gst { name } //4.获取数组中的元素以及位置 for (index, name) in enumerate(gst) { index name } //5.字典 //[注:]在Swift依旧保留了键值对(key-value), 但是需要注意的地方:value也必须是同一种类型 //声明一个变量 var sc = Dictionary<String, Int>() //增 //Swift中,通过下表访问字典中的元素, 如果字典中没有相对应的key, 那么就是添加数据 sc["age"] = 12 sc["name"] = 2 sc //删 sc.removeValueForKey("age") //改 //通过下表访问字典中的元素, 如果字典中有对应的key,那么就修改字典中的值 sc["name"] = 111 sc //查 //1.下标法 //2.遍历 for - in for (key, value) in sc { key value } //Bool类型 //Bool 类型只有true 和 false var ad : Bool = true var bs : Bool = false var b_zs : Bool = true //String var b_hxw : String = "HuangXiangWang" b_hxw.uppercaseString // 大写 b_hxw.lowercaseString // 小写
以上代码便是Swift语言数组和字典的定义,很明显从这些可以看出来,它和C语言及其他语言的定义方法都不同,所以要想熟悉这些需要更多的努力,不管是什么我们都需要不写努力,为此我们还做了大量的练习,具体如下:
//分支结构 //1.if - else //if 条件 { // 语句块 //} var a = 5 if (a == 5) { a } // [注:]条件必须是Bool类型 //2. Switch - case var b = 2 switch b { case 0: b; case 1: b + 1; case 2: b + 2; fallthrough //[注:]在Swift中, 通过使用fallthrough可以强制的执行下一个case case 3: b + 3; case 4: b + 4; default: b + 5; } // [注:]写Switch一定要加上default // [注:]在Swift中, switch case加强了, 无需要在每个case后添加break //[练习] 给一个日期, xx年xx月xx日, 计算这一天是这个年的第几天? //switch 中的case可以表示为一个范围, 范围可以交叉, 执行满足第一个条件后, 就跳出循环 var c = 25 switch c { case 0...25 where c != 29:// 使用where进行双重判断 println("在0~30之间") case 20...80: println("在20~80之间") default: println("没有这个数") } //元组也可以作为switch条件 var point = (1, 0) switch point { case (0, 0): println("原点") case (_, 0): println("在X轴上") case (0, _): println("在Y轴上") default: println("其他点") } // 3.循环结构 // 1. for for var i = 0; i < 20; i++ { i } //2.for - in for j in 0...10 { j } // 3.while var sum = 0 // while的条件也需要一个返回值为Bool类型的条件, 例如 while 1 {} 为错误 while sum < 7 { sum += 1 } do { sum += 1 } while (sum < 10) //在数组中存放10个元组对象 var shuzu : Array = [String, Int]() for var i = 0; i < 10; i++ { shuzu.append("hah", 45) } shuzu //在字典中使用元组作为value var sd = Dictionary<String, (String, Int)>() sd["name"] = ("wang", 15) //3.在字典中使用数组作为value var sk = Dictionary<String, [String]>() sk["wujie"] = ["wode"] var yuanzu : (String, [Int]) = ("gaga", [55])
同时在课堂的最后我们还进一步学习了Swift语言中的函数语句包括多参和单一参数的,具体代码如下所示:
//函数 //函数定义 /* func 函数名 (参数列表) -> (返回值类型) { 代码块 } */ func sayHello (name: String) -> (String) { return "hello " + name } sayHello("QiaoDaYe") //多个参数 参数之间用逗号隔开 func sayByeBye (name: String, name1: String) -> (String) { return name + " ByeBye " + name1 } sayByeBye("QiaoDaYe", "GuoZhong") //返回值为多个参数 返回值为元组类型 func sayInfo (name: String, age: String) -> (String, String) { return (name, age) } sayInfo("baby", "27").0
以上这些便是我们今天所学习的东西了,虽然不是很多,但毕竟是第一次接触吧,还是需要很长时间练习与总结的,每次接触一个新的知识点的时候,虽然课堂上听会了,但是更多是需要大量的练习与总结,所以望敲代码的小伙伴们一起努力,打造属于我们的明天,好了今天就写到这里了,明天我会继续努力的,加油,加油!